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