⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tcmiso.cpp

📁 李刚 请赶快放开我的权限 我上载的源码都是很精湛的,请查阅,qing请加我 li_xue_ming@msn.com必要的话可以和我在线沟通
💻 CPP
📖 第 1 页 / 共 2 页
字号:
    // 时间计算结束
    if ( g_nCmisTestCounter >= NUM_CMISTESTCOUNTER )
    {
        // 输出统计信息
        g_cCmisTestEndTime = CTime::GetCurrentTime();
        CTimeSpan cCmisTestTimeSpan;
        cCmisTestTimeSpan = ( g_cCmisTestEndTime - g_cCmisTestBeginTime );
        PrintMsg( (LPSTR)"Test Cmis End\n" );
        PrintMsg( (LPSTR)"********************************\n" );
        PrintMsg( (LPSTR)"Test statistics : \n" );
        PrintMsg( (LPSTR)"Total CMIS test count is %d\n", g_nCmisTestCounter );
        PrintMsg( (LPSTR)"Req Length is %d\n", g_nCmisTestReqLength );
        PrintMsg( (LPSTR)"Rsp Length is %d\n", g_nCmisTestRspLength );
        PrintMsg( (LPSTR)"Avg Length is %f\n", 
            ( g_nCmisTestReqLength + g_nCmisTestRspLength ) / 2.0 );
        PrintMsg( (LPSTR)"Begin Time is     %s\n", 
            g_cCmisTestBeginTime.Format( (LPSTR)"%H:%M:%S" ) );
        PrintMsg( (LPSTR)"End Time is       %s\n", 
            g_cCmisTestEndTime.Format( (LPSTR)"%H:%M:%S" ) );
        PrintMsg( (LPSTR)"Time Span is      %s\n", 
            cCmisTestTimeSpan.Format( (LPSTR)"%M'%S\"" ) );
        PrintMsg( (LPSTR)"Rate is %f(c/m)\n", 
            ( (g_nCmisTestCounter * 60.0) / cCmisTestTimeSpan.GetTotalSeconds() ) );
        PrintMsg( (LPSTR)"********************************\n" );

        // 复位
        g_nCmisTestCounter = 0;
        g_nCmisTestReqLength = 0;
        g_nCmisTestRspLength = 0;
        return;
    }

    // 记数
    g_nCmisTestCounter ++;

#ifdef _TESTFSM
    TestFsm();
#endif //_TESTFSM

#ifdef _MA_CMIS
    TestMACmis();
#endif //_MA_CMIS

#ifdef _AM_CMIS
    TestAMCmis();
#endif //_AM_CMIS

#ifdef _AA_CMIS
    TestAACmis();
#endif //_AA_CMIS

#ifdef _BP_CMIS
    TestBPCmis();
#endif //_BP_CMIS
}

void TempTest()
{
    /* 测试代码 */
    CAttribute *pcAttribute ;
    BYTE byTmp ;
    CAsnOctetString  cOfficeIdSsn;
    BYTE byNum = 1 ;   

    cOfficeIdSsn.SetSize( 2 ) ;
    cOfficeIdSsn[0] =  byTmp ;
    cOfficeIdSsn[1] =  byTmp ;

    pcAttribute = new CAttribute;
    pcAttribute->Set(2454,new CAsnOctetString( cOfficeIdSsn ));
}

void CCmisTestFsm::OnSystemNormal ( LPBYTE lpIn, LPBYTE lpOut, LPBYTE lpData )
{
    TempTest();

    // 注册逻辑名
    FsmNameRegister( (LPSTR)"CTF" );

    // 获取FID
    FsmSelf( &m_tSelfFid );

#ifdef _MA_CMIS
    InitMACmis();
#endif //_MA_CMIS

#ifdef _AM_CMIS
    InitAMCmis();
#endif //_AM_CMIS

#ifdef _AA_CMIS
    InitAACmis();
#endif //_AA_CMIS

#ifdef _BP_CMIS
    InitBPCmis();
#endif //_BP_CMIS

    // 测试
    TestCmis();
}

void CCmisTestFsm::OnTestFsm ( LPBYTE lpIn, LPBYTE lpOut, LPBYTE lpData )
{
    static FID tFid = {0, 0, 0};
    if ( tFid == FID_NULL )
    {
        VERIFY( GetFIDFromName ( TESTFSM_NAME, &tFid) );
    }

    CGetReqArgument cGetReqArgument;
    SetGetReqArgument( cGetReqArgument );

    BYTE byBuffer[NUM_BUFFERLENGTH];
    FsmASend( EV_TST_TESTFSMMSG, byBuffer, NUM_BUFFERLENGTH, tFid );
    if ( g_nCmisTestReqLength == 0 )
        g_nCmisTestReqLength = NUM_BUFFERLENGTH;

#ifdef TEST_PRINTMSG
    PrintMsg( (LPSTR)"Send Req, Id is %d\n", g_nCmisTestCounter );
#endif // TEST_PRINTMSG
}

void CCmisTestFsm::OnTestFsmMsg ( LPBYTE lpIn, LPBYTE lpOut, LPBYTE lpData )
{
    ASSERT( FsmLength() == NUM_BUFFERLENGTH );
    if ( g_nCmisTestRspLength == 0 )
        g_nCmisTestRspLength = NUM_BUFFERLENGTH;

#ifdef TEST_PRINTMSG
    PrintMsg( (LPSTR)"Recv Rsp, Id is %d\n", g_nCmisTestCounter );
#endif // TEST_PRINTMSG

    CGetRspArgument cGetRspArgument;
    SetGetRspArgument( cGetRspArgument );

    TestCmis();
}

void CCmisTestFsm::OnTestAACmisGet ( LPBYTE lpIn, LPBYTE lpOut, LPBYTE lpData )
{
    // 发送M-GET请求命令
    CGetArgument cGetArgument;
    SetGetReqArgument( cGetArgument );

    // 发送M-GET请求命令
    CInvokeIdType cInvokeId;
    while ( ! m_pcAACmis->GetRequest(cGetArgument, cInvokeId, FALSE) )
    {
#ifdef TEST_PRINTMSG
        PrintMsg( (LPSTR)"...TEST : AACmis, send M-GET REQ msg FAILURE!!! Retry...\n" );
#endif // TEST_PRINTMSG
    }

#ifdef TEST_PRINTMSG
    PrintMsg( (LPSTR)"...TEST : AACmis, send M-GET REQ msg, Vid = %d\n ", 
        (ASNINTEGERTYPE)cInvokeId );
#endif // TEST_PRINTMSG

}

void CCmisTestFsm::OnAACmisGetReq ( LPBYTE lpIn, LPBYTE lpOut, LPBYTE lpData )
{
    // 接受M-GET应答命令
    CInvokeIdType cInvokeId;
    CGetReqArgument cReq;

    // 分析消息参数
    if ( ! CCmis::ParseMessage( lpIn, FsmLength(), cReq, cInvokeId ) )
    {
#ifdef TEST_PRINTMSG
        TRACE( (LPSTR)"...TEST : AACmis, M-GET REQ ParseMessage FAILURE!\n" );
#endif // TEST_PRINTMSG
        return;
    }

    // 填写请求长度
    if ( g_nCmisTestReqLength == 0 )
    {
        g_nCmisTestReqLength = FsmLength() - sizeof(tagCmaCmisOperationHeader);
        ASSERT( g_nCmisTestReqLength >= 0 );
    }

#ifdef TEST_PRINTMSG
    PrintMsg( (LPSTR)"...TEST : AACmis, rece M-GET REQ msg, Vid = %d\n ", 
        (ASNINTEGERTYPE)cInvokeId );
#endif // TEST_PRINTMSG

    // 发送响应函数
    CGetRspArgument cRsp;
    SetGetRspArgument( cRsp );

    while ( ! m_pcAACmis->GetResponse( cRsp, cInvokeId ) )
    {
#ifdef TEST_PRINTMSG
        PrintMsg( (LPSTR)"...TEST : AACmis, send M-GET RSP msg FAILURE!!! Retry...\n" );
#endif // TEST_PRINTMSG
    }

#ifdef TEST_PRINTMSG
    PrintMsg( (LPSTR)"...TEST : AACmis, send M-GET RSP msg, Vid = %d\n ", 
        (ASNINTEGERTYPE)cInvokeId );
#endif // TEST_PRINTMSG
}

void CCmisTestFsm::OnAACmisGetRsp ( LPBYTE lpIn, LPBYTE lpOut, LPBYTE lpData )
{
    // 接受M-GET应答命令
    CInvokeIdType cInvokeId;
    BOOL bIsLast;
    CGetRspArgument cRsp;

    // 分析消息参数
    if ( ! CCmis::ParseMessage( lpIn, FsmLength(), cRsp, cInvokeId, bIsLast ) )
    {
#ifdef TEST_PRINTMSG
        TRACE( (LPSTR)"...TEST : AACmis, M-GET RSP ParseMessage FAILURE!\n" );
#endif // TEST_PRINTMSG
        return;
    }

    // 填写请求长度
    if ( g_nCmisTestRspLength == 0 )
    {
        g_nCmisTestRspLength = FsmLength() - sizeof(tagCmaCmisOperationHeader);
        ASSERT( g_nCmisTestRspLength >= 0 );
    }

#ifdef TEST_PRINTMSG
    PrintMsg( (LPSTR)"...TEST : AACmis, rece M-GET RSP msg, Vid = %d\n ", 
        (ASNINTEGERTYPE)cInvokeId );
#endif // TEST_PRINTMSG

    // 继续发送测试消息
    TestCmis();
}

void CCmisTestFsm::OnTestAACmisCreate( LPBYTE lpIn, LPBYTE lpOut, LPBYTE lpData )
{
}

void CCmisTestFsm::OnAACmisCreateReq ( LPBYTE lpIn, LPBYTE lpOut, LPBYTE lpData )
{
}

void CCmisTestFsm::OnAACmisCreateRsp ( LPBYTE lpIn, LPBYTE lpOut, LPBYTE lpData )
{
}

void CCmisTestFsm::OnTestAACmisEventReport ( LPBYTE lpIn, LPBYTE lpOut, LPBYTE lpData )
{
    // 发送M-GET请求命令
    CEventReportArgument cEventReportArgument;
    SetEventReportReqArgument( cEventReportArgument );

    // 发送M-GET请求命令
    CInvokeIdType cInvokeId;
    VERIFY( m_pcAACmis->EventReportRequest(cEventReportArgument, cInvokeId, FALSE) );

#ifdef TEST_PRINTMSG
    PrintMsg( (LPSTR)"...TEST : AACmis, send M-EVENT-REPORT REQ msg, Vid = %d\n ", 
        (ASNINTEGERTYPE)cInvokeId );
#endif // TEST_PRINTMSG

}

void CCmisTestFsm::OnAACmisEventReportReq ( LPBYTE lpIn, LPBYTE lpOut, LPBYTE lpData )
{
    // 接受M-GET应答命令
    CInvokeIdType cInvokeId;
    BOOL bNeedConfirm;
    CEventReportReqArgument cReq;

    // 分析消息参数
    if ( ! CCmis::ParseMessage( lpIn, FsmLength(), cReq, cInvokeId, bNeedConfirm ) )
    {
#ifdef TEST_PRINTMSG
        TRACE( (LPSTR)"...TEST : AACmis, M-EVENT-REPORT REQ ParseMessage FAILURE!\n" );
#endif // TEST_PRINTMSG
        return;
    }

#ifdef TEST_PRINTMSG
    PrintMsg( (LPSTR)"...TEST : AACmis, rece M-EVENT-REPORT REQ msg, Vid = %d\n ", 
        (ASNINTEGERTYPE)cInvokeId );
#endif // TEST_PRINTMSG

    // 发送响应函数
    CEventReportRspArgument cRsp;
    SetEventReportRspArgument( cRsp );

    VERIFY( m_pcAACmis->EventReportResponse( cRsp, cInvokeId ) );

#ifdef TEST_PRINTMSG
    PrintMsg( (LPSTR)"...TEST : AACmis, send M-EVENT-REPORT RSP msg, Vid = %d\n ", 
        (ASNINTEGERTYPE)cInvokeId );
#endif // TEST_PRINTMSG
}

void CCmisTestFsm::OnAACmisEventReportRsp ( LPBYTE lpIn, LPBYTE lpOut, LPBYTE lpData )
{
    // 接受M-GET应答命令
    CInvokeIdType cInvokeId;
    CEventReportRspArgument cRsp;

    // 分析消息参数
    if ( ! CCmis::ParseMessage( lpIn, FsmLength(), cRsp, cInvokeId ) )
    {
#ifdef TEST_PRINTMSG
        TRACE( (LPSTR)"...TEST : AACmis, M-EVENT-REPORT RSP ParseMessage FAILURE!\n" );
#endif // TEST_PRINTMSG
        return;
    }

#ifdef TEST_PRINTMSG
    PrintMsg( (LPSTR)"...TEST : AACmis, rece M-EVENT-REPORT RSP msg, Vid = %d\n ", 
        (ASNINTEGERTYPE)cInvokeId );
#endif // TEST_PRINTMSG

    // 继续发送测试消息
    TestCmis();
}

void CCmisTestFsm::OnTestBPCmisCreate ( LPBYTE lpIn, LPBYTE lpOut, LPBYTE lpData )
{
    ASSERT( m_pcBPCmis );

    // 发送
    CCreateArgument cCreateArgument;
    SetCreateReqArgument( cCreateArgument );

    CInvokeIdType cInvokeId;
    VERIFY( m_pcBPCmis->CreateRequest( cCreateArgument, cInvokeId ) );
    PrintMsg( (LPSTR)"...TEST : BPCmis, send M-CREATE REQ msg, vid = %d\n", 
        (ASNINTEGERTYPE)cInvokeId );
}

void CCmisTestFsm::OnBPCmisCreateRsp ( LPBYTE lpIn, LPBYTE lpOut, LPBYTE lpData )
{
    CCreateRspArgument rsp;
    CInvokeIdType vid;
    if ( ! CCmis::ParseMessage( lpIn, FsmLength(), rsp, vid ) )
    {
        TRACE( (LPSTR)"...TEST : BPCmis, M-CREATE PraseMessage FAILURE!\n" );
        return;
    }
    PrintMsg( (LPSTR)"...TEST : BPCmis, recv M-CREATE msg, Vid = %d\n", 
        (ASNINTEGERTYPE)vid );

    // 再次测试
    TestCmis();
}

void CCmisTestFsm::OnTestMACmisGet( LPBYTE lpIn, LPBYTE lpOut, LPBYTE lpData )
{
    // 发送M-GET请求命令
    CGetArgument cGetArgument;

    //设置M-GET参数. 可以预先在其他地方设置好, 这里直接发送.
    SetGetReqArgument( cGetArgument );

    // 发送M-GET请求命令
    CInvokeIdType cInvokeId;
    BOOL bResult = m_pcMACmis->GetRequest(cGetArgument, cInvokeId, FALSE);
    ASSERT ( bResult );
    PrintMsg( (LPSTR)"...TEST : MACmis, send M-GET REQ msg, Vid = %d\n ", 
        (ASNINTEGERTYPE)cInvokeId );
}

void CCmisTestFsm::OnAMCmisGetReq ( LPBYTE lpIn, LPBYTE lpOut, LPBYTE lpData )
{
    // 接受M-GET应答命令
    CInvokeIdType cInvokeId;
    CGetReqArgument cReq;

    // 分析消息参数
    if ( ! CCmis::ParseMessage( lpIn, FsmLength(), cReq, cInvokeId ) )
    {
        TRACE( (LPSTR)"...TEST : AMCmis, M-GET REQ ParseMessage FAILURE!\n" );
        return;
    }
    PrintMsg( (LPSTR)"...TEST : AMCmis, rece M-GET REQ msg, Vid = %d\n ", 
        (ASNINTEGERTYPE)cInvokeId );

    // 发送响应函数
    CGetRspArgument cRsp;
    SetGetRspArgument( cRsp );

    VERIFY( m_pcAMCmis->GetResponse( cRsp, cInvokeId ) );
    PrintMsg( (LPSTR)"...TEST : AMCmis, send M-GET RSP msg, Vid = %d\n ", 
        (ASNINTEGERTYPE)cInvokeId );
}

void CCmisTestFsm::OnMACmisGetRsp ( LPBYTE lpIn, LPBYTE lpOut, LPBYTE lpData )
{
    // 接受M-GET应答命令
    CInvokeIdType cInvokeId;
    BOOL bIsLast;
    CGetRspArgument cRsp;

    // 分析消息参数
    if ( ! CCmis::ParseMessage( lpIn, FsmLength(), cRsp, cInvokeId, bIsLast ) )
    {
        TRACE( (LPSTR)"...TEST : MACmis, M-GET RSP ParseMessage FAILURE!\n" );
        return;
    }
    PrintMsg( (LPSTR)"...TEST : MACmis, rece M-GET RSP msg, Vid = %d\n ", 
        (ASNINTEGERTYPE)cInvokeId );

    // 继续发送测试消息
    TestCmis();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -