void * YHSocketRecvThread::Execute()
{
	bool loop = true;
	while (loop)
	{
		try
		{
			// 接收包头
			YHByteArray header;
			header.init(4);
			m_manager->m_connectManager->connectedSocket()->RecvData(header.getBuffer(), header.getCapacity(), MSG_WAITALL);
			
			uint32 size = header.getUnsignedInt(0);
			
			// 接收实际内容
			YHByteArray * content = new YHByteArray();
			content->init(size);
			m_manager->m_connectManager->connectedSocket()->RecvData(content->getBuffer(), size, MSG_WAITALL);
			content->setWriterIndex(size);
			
			// 将接收到的数据添加进队列
			m_manager->m_mutex.Lock();
			m_manager->m_queue->addObject(content);
			content->release();
			m_manager->m_mutex.Unlock();
		}
		catch (SocketException e)
		{
			m_destroy = true;
			
			m_manager->m_connectManager->close();
			
			m_manager->m_mutex.Lock();
			m_manager->m_queue->removeAllObjects();
			m_manager->m_mutex.Unlock();
			
			CCLOG("%s", (const char *)e);
		}
		catch (ThreadException e)
		{
			CCLOG("%s", (const char *)e);
		}
		
		if (m_destroy)
		{
			loop = false;
		}
	}
	
	return NULL;
}