Esempio n. 1
0
bool CAsynPipe::Connect(const CAddress& Address)
{
	m_eState = eAPS_Connecting;
	CPipeThread* pThread = CPipeThreadMgr::Inst()->GetThread(GetThreadId());
	(new(pThread) CPipeConnectJob(GetLocalID(), Address, pThread))->Add(pThread);
	return true;
}
Esempio n. 2
0
void CAsynPipe::ShutDown(bool bNeedCallback)
{
	DelFromAllMulticast();
	m_eState = eAPS_Disconnected;
	m_InBuffer.InBufferClear();
	IncreSessionID();

	CPipeThread* pThread = CPipeThreadMgr::Inst()->GetThread(GetThreadId());
	(new(pThread) CPipeShutdownJob(GetLocalID(), bNeedCallback, pThread))->Add(pThread);
}
Esempio n. 3
0
std::shared_ptr<simpla::data::DataEntry> MeshBlock::Serialize() const {
    auto res = data::Serializable::Serialize();
    res->SetValue("LowIndex", std::get<0>(GetIndexBox()));
    res->SetValue("HighIndex", std::get<1>(GetIndexBox()));

    res->SetValue("Level", GetLevel());
    res->SetValue("LocalId", GetLocalID());
    res->SetValue("GUID", GetGUID());
    return res;
}
Esempio n. 4
0
void CAsynPipe::Release()
{
	m_eState = eAPS_Disconnected;
	DelFromAllMulticast();

	if( m_pReactor )
	{
		CPipeThread* pThread = CPipeThreadMgr::Inst()->GetThread(GetThreadId());
		VerGt( pThread->m_stPipeNum--,0 );
		(new(pThread) CPipeReleaseJob(GetLocalID(), pThread))->Add(pThread);
	}
	delete this;
}
Esempio n. 5
0
void CAsynPipe::DelFromAllMulticast()
{
	for (SetWithinMulticast_t::iterator it = m_setWithinMulticast.begin();
		it != m_setWithinMulticast.end();)
	{
		(*(it++))->DelPipe(this);
	}
	m_setWithinMulticast.clear();

	if( m_pReactor )
	{
		CPipeThread* pThread = CPipeThreadMgr::Inst()->GetThread(GetThreadId());	
		(new(pThread) CPipeDelFromAllMulticastJob(GetLocalID(), pThread))->Add(pThread);
	}
}
Esempio n. 6
0
size_t CAsynPipe::Send(const void* pData,size_t stSize)
{
	if ( m_bSendBufferFull || (stSize == 0) )
		return 0;

	Ast(m_pReactor);

	if (!IsConnected())
		return 0;

	const char* pByteData = reinterpret_cast<const char*>(pData);
	
	CPipeThread* pThread = CPipeThreadMgr::Inst()->GetThread(GetThreadId());
	(new(pThread) CPipeSendDataJob(GetLocalID(), pByteData, (uint32)stSize, pThread))->Add(pThread);

	return stSize;
}
Esempio n. 7
0
bool Engine::TCPSend( USHORT PacketID, NetworkMessage* pMessage, int Size )
{
	char Buffer[2048] = {0,};

	if(PacketID == CGSF::MSG_PLAYER_HEALTH)
	{
		SFProtobufPacket<SFPacketStore::MSG_PLAYER_HEALTH> PktPlayerHealth(CGSF::MSG_PLAYER_HEALTH);
		PktPlayerHealth.SetOwnerSerial(GetLocalID());

		PktPlayerHealth.GetData().set_playerhealth(pMessage, Size);
		
		m_pNetwork->TCPSend(&PktPlayerHealth);
	}
	/*else if (PacketID == CGSF::MSG_PLAYER_LOOK_UPDATE)
	{
		SFPacketStore::MSG_PLAYER_LOOK_UPDATE PktPlayerLookUpdate;
		PktPlayerLookUpdate.set_lookupdate(pMessage, Size);
		int BufSize = PktPlayerLookUpdate.ByteSize();

		if(BufSize != 0)
		{
			::google::protobuf::io::ArrayOutputStream os(Buffer, BufSize);
			PktPlayerLookUpdate.SerializeToZeroCopyStream(&os);
		}

		m_pNetwork->TCPSend(CGSF::MSG_PLAYER_LOOK_UPDATE, Buffer, BufSize);
	}
	else if(PacketID == CGSF::MSG_PLAYER_MOVE_UPDATE)
	{
		SFPacketStore::MSG_PLAYER_MOVE_UPDATE PktPlayerMoveUpdate;
		PktPlayerMoveUpdate.set_moveupdate(pMessage, Size);
		int BufSize = PktPlayerMoveUpdate.ByteSize();

		if(BufSize != 0)
		{
			::google::protobuf::io::ArrayOutputStream os(Buffer, BufSize);
			PktPlayerMoveUpdate.SerializeToZeroCopyStream(&os);
		}

		m_pNetwork->TCPSend(CGSF::MSG_PLAYER_MOVE_UPDATE, Buffer, BufSize);
	}*/
	else if(PacketID == CGSF::MSG_SPAWN_PLAYER)
	{
		SFProtobufPacket<SFPacketStore::MSG_SPAWN_PLAYER> PktSpawnPlayer(CGSF::MSG_SPAWN_PLAYER);
		PktSpawnPlayer.SetOwnerSerial(GetLocalID());
		PktSpawnPlayer.GetData().set_spawnplayer(pMessage, Size);

		m_pNetwork->TCPSend(&PktSpawnPlayer);
	}
	else if(PacketID == CGSF::PlayerIP)
	{
		SFProtobufPacket<SFPacketStore::PLAYER_IP> PktPlayerIP(CGSF::PlayerIP);
		PktPlayerIP.SetOwnerSerial(GetLocalID());

		PktPlayerIP.GetData().set_playerip(pMessage, Size);

		m_pNetwork->TCPSend(&PktPlayerIP);
	}
	
	return true;
}