CLStatus CLMsgLoopManagerForSTLqueue::Initialize() { CLExecutiveNameServer *pNameServer = CLExecutiveNameServer::GetInstance(); if(pNameServer == 0) { delete m_pMsgQueue; m_pMsgQueue = 0; CLLogger::WriteLogMsg("In CLMsgLoopManagerForMsgQueue::Initialize(), CLExecutiveNameServer::GetInstance error", 0); return CLStatus(-1, 0); } CLStatus s = pNameServer->Register(m_strThreadName.c_str(), new CLThreadCommunicationBySTLqueue(m_pMsgQueue)); if(!s.IsSuccess()) { delete m_pMsgQueue; m_pMsgQueue = 0; CLLogger::WriteLogMsg("In CLMsgLoopManagerForMsgQueue::Initialize(), pNameServer->Register error", 0); return CLStatus(-1, 0); } else { return CLStatus(0, 0); } }
CLStatus On_1(CLMessage *pm) { CLMsg1ForCLNonThreadForMsgLoopTest *p = dynamic_cast<CLMsg1ForCLNonThreadForMsgLoopTest*>(pm); EXPECT_TRUE(p != 0); g_for_on1++; CLExecutiveNameServer *pNameServer = CLExecutiveNameServer::GetInstance(); EXPECT_TRUE(pNameServer != 0); CLEvent *m_pEvent = new CLEvent(test1_pipe_name, true); CLMultiMsgSerializer *m_pMsgSerializer = new CLMultiMsgSerializer; EXPECT_TRUE(m_pMsgSerializer->RegisterSerializer(1, new CLMsg1ForCLNonThreadForMsgLoopTest_Serializer).IsSuccess()); EXPECT_TRUE(m_pMsgSerializer->RegisterSerializer(2, new CLMsg2ForCLNonThreadForMsgLoopTest_Serializer).IsSuccess()); CLMessagePoster *pMsgPoster = new CLMessagePoster(m_pMsgSerializer, 0, new CLDataPostChannelByNamedPipeMaintainer(test1_pipe_namepath), m_pEvent); EXPECT_TRUE(pMsgPoster->Initialize(new CLInitialDataPostChannelNotifier(), 0).IsSuccess()); EXPECT_TRUE(pNameServer->Register(test1_pipe_name, pMsgPoster).IsSuccess()); EXPECT_TRUE(CLExecutiveNameServer::PostExecutiveMessage(test1_pipe_name, new CLMsg1ForCLNonThreadForMsgLoopTest, true).IsSuccess()); return CLStatus(0, 0); }