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);
	}