本文整理汇总了C++中WriteBuffer::ToByteBuffer方法的典型用法代码示例。如果您正苦于以下问题:C++ WriteBuffer::ToByteBuffer方法的具体用法?C++ WriteBuffer::ToByteBuffer怎么用?C++ WriteBuffer::ToByteBuffer使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WriteBuffer
的用法示例。
在下文中一共展示了WriteBuffer::ToByteBuffer方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: SendReadyRequest
void StagingLogic::SendReadyRequest(bool isReady)
{
WriteBuffer aMsg;
aMsg.AppendByte(LobbyGameMsg_ReadyRequest);
aMsg.AppendBool(isReady);
SendGameMessageToCaptain(aMsg.ToByteBuffer());
}
示例2: SetNetAddrPort
void AddServiceOp::SetNetAddrPort(unsigned short thePort)
{
WriteBuffer theBuf;
theBuf.AppendShort( htons(thePort) );
SetNetAddr(theBuf.ToByteBuffer());
}
示例3: GetJoinGameRequest
ByteBufferPtr LobbyGame::GetJoinGameRequest()
{
WriteBuffer aBuf;
aBuf.AppendByte(LobbyGameMsg_JoinRequest);
aBuf.AppendShort(mPing);
GetJoinGameRequestHook(aBuf);
return aBuf.ToByteBuffer();
}
示例4: Decrypt
WONStatus AuthSession::Decrypt(ByteBufferPtr &theMsg)
{
mLastUseTime = time(NULL);
try
{
if(mAuthType==AUTH_TYPE_NONE || mAuthType==AUTH_TYPE_PERSISTENT_NOCRYPT)
return WS_Success;
ReadBuffer anIn(theMsg->data(),theMsg->length());
WriteBuffer anOut;
unsigned char headerType = anIn.ReadByte();
switch (headerType)
{
case 2: break; //WONMsg::EncryptedService:
case 4: anOut.AppendByte(3); break; //WONMsg::MiniEncryptedService:
case 6: anOut.AppendByte(5); break; //WONMsg::SmallEncryptedService:
case 8: anOut.AppendByte(7); break; //WONMsg::LargeEncryptedService:
case 12: break; //WONMsg::HeaderEncryptedService:
default:
return WS_Success;
}
bool sessioned = mAuthType==AUTH_TYPE_SESSION;
if(sessioned)
{
unsigned short aSessionId = anIn.ReadShort();
if(aSessionId!=mId)
return WS_AuthSession_DecryptSessionIdMismatch;
}
ByteBufferPtr aDecrypt = mKey.Decrypt(anIn.data() + anIn.pos(), anIn.length() - anIn.pos());
if(aDecrypt.get()==NULL)
return WS_AuthSession_DecryptFailure;
if(sessioned)
{
if(aDecrypt->length()<2)
return WS_AuthSession_DecryptBadLen;
if(++mInSeq!=ShortFromLittleEndian(*(unsigned short*)aDecrypt->data())) // sequence mismatch
return WS_AuthSession_DecryptInvalidSequenceNum;
anOut.AppendBytes(aDecrypt->data()+2,aDecrypt->length()-2);
}
else
anOut.AppendBytes(aDecrypt->data(),aDecrypt->length());
theMsg = anOut.ToByteBuffer();
return WS_Success;
}
catch(ReadBufferException&)
{
return WS_AuthSession_DecryptUnpackFailure;
}
}
示例5: SendDissolveGame
void StagingLogic::SendDissolveGame()
{
if(!IAmCaptain())
return;
WriteBuffer aMsg;
aMsg.AppendByte(LobbyGameMsg_DissolveGame);
BroadcastGameMessage(aMsg.ToByteBuffer());
}
示例6: HandleJoinGameRequest
ByteBufferPtr LobbyGame::HandleJoinGameRequest(ReadBuffer &theMsg, LobbyClient *theClient)
{
WriteBuffer aBuf;
aBuf.AppendByte(LobbyGameMsg_JoinReply);
aBuf.AppendShort(0); // reserve space for status
short aStatus = HandleJoinGameRequest(theMsg,theClient,aBuf);
aBuf.SetShort(1,aStatus);
return aBuf.ToByteBuffer();
}
示例7: GetRequest
ByteBufferPtr MultiPingOp::GetRequest(MultiPingStruct *theStruct)
{
theStruct->mPingId = rand();
theStruct->mStartPingTick = GetTickCount();
WriteBuffer aBuf;
aBuf.AppendByte(3);
aBuf.AppendByte(1);
aBuf.AppendByte(5);
aBuf.AppendLong(theStruct->mPingId);
aBuf.AppendBool(false);
return aBuf.ToByteBuffer();
}
示例8: NotifyPingChange
void StagingLogic::NotifyPingChange(LobbyGame *theGame)
{
if(mGame.get()==NULL || IAmCaptain())
return;
if(!theGame->IsSameGame(mGame))
return;
WriteBuffer aMsg;
aMsg.AppendByte(LobbyGameMsg_PingChangedRequest);
aMsg.AppendShort(theGame->GetPing());
SendGameMessageToCaptain(aMsg.ToByteBuffer());
}
示例9: KickClient
void StagingLogic::KickClient(LobbyClient *theClient, bool isBan)
{
if(theClient==NULL || mGame.get()==NULL || !IAmCaptain())
return;
WriteBuffer aMsg;
aMsg.AppendByte(LobbyGameMsg_ClientKicked);
aMsg.AppendShort(theClient->GetClientId());
aMsg.AppendBool(isBan);
BroadcastGameMessage(aMsg.ToByteBuffer());
LobbyStagingPrv::NetKickClient(theClient,isBan);
}
示例10: HandleReadyRequest
void StagingLogic::HandleReadyRequest(ReadBuffer &theMsg, LobbyClient *theSender)
{
if(!IAmCaptain() || !theSender->IsPlayer())
return;
bool isReady = theMsg.ReadBool();
if(theSender->IsPlayerReady()==isReady) // no change needed
return;
WriteBuffer aMsg;
aMsg.AppendByte(LobbyGameMsg_PlayerReady);
aMsg.AppendShort(theSender->GetClientId());
aMsg.AppendBool(isReady);
BroadcastGameMessage(aMsg.ToByteBuffer());
}
示例11: RunHook
void UpdateVersionOp::RunHook()
{
SetMessageType(DBProxyMsgType::DBProxyPatchServer);
SetSubMessageType(mMsgType);
// Pack the message data
WriteBuffer requestData;
requestData.AppendString(mProductName);
mVersionData->WriteToBuffer(requestData, VersionData::WriteFlag_AppendDescripURL | VersionData::WriteFlag_AppendState);
// Pack and call base class implementation
SetProxyRequestData(requestData.ToByteBuffer());
DBProxyOp::RunHook();
}
示例12: RunHook
void QueryBannedKeyOp::RunHook()
{
SetMessageType(DBProxyAccount);
SetSubMessageType(MSGTYPE);
mKeyList.clear();
// Stores the message data
WriteBuffer requestData;
requestData.AppendWString(mCommunityName);
requestData.AppendString(mProductName);
// Copy buffer into the class
SetProxyRequestData(requestData.ToByteBuffer());
DBProxyOp::RunHook();
}
示例13: EncodeToBuffer
ByteBufferPtr WIMDecoder::EncodeToBuffer(RawImagePtr theImage)
{
if(theImage->GetType()!=RawImageType_32)
return NULL;
RawImage32 *anImage = (RawImage32*)theImage.get();
WriteBuffer aBuf;
aBuf.AppendBytes("WIM",3); // file format identifier
aBuf.AppendLong(32); // file subtype (32-bit raw)
aBuf.AppendByte(anImage->GetDoTransparency()?1:0); // apply transparency bit?
aBuf.AppendLong(anImage->GetWidth());
aBuf.AppendLong(anImage->GetHeight());
aBuf.AppendBytes(anImage->GetImageData(), 4*anImage->GetWidth()*anImage->GetHeight());
return aBuf.ToByteBuffer();
}
示例14: HandlePingChangedRequest
void StagingLogic::HandlePingChangedRequest(ReadBuffer &theMsg, LobbyClient *theSender)
{
if(!IAmCaptain())
return;
unsigned short aPing = theMsg.ReadShort();
LobbyPlayer *aPlayer = theSender->GetPlayer();
if(aPlayer==NULL)
return;
WriteBuffer aMsg;
aMsg.AppendByte(LobbyGameMsg_PingChanged);
aMsg.AppendShort(theSender->GetClientId());
aMsg.AppendShort(aPing);
BroadcastGameMessage(aMsg.ToByteBuffer());
}
示例15: RunHook
void ReportPatchStatusOp::RunHook()
{
SetMessageType(DBProxyPatchServer);
SetSubMessageType(mMsgType);
// Pack the message data
WriteBuffer requestData;
requestData.AppendString(mProductName);
requestData.AppendString(mConfigName);
requestData.AppendString(mFromVersion);
requestData.AppendString(mToVersion);
requestData.AppendString(mNetAddress); // patch url
requestData.AppendByte(mPatchStatus);
// Pack and call base class implementation
SetProxyRequestData(requestData.ToByteBuffer());
if(mUDPSocket.get()==NULL) // just do TCP ServerRequest
{
DBProxyOp::RunHook();
return;
}
// Do UDP server request
IPAddr anAddr = GetAddr();
if(!anAddr.IsValid())
{
Finish(WS_ServerReq_NoServersSpecified);
return;
}
Reset();
unsigned char aLengthFieldSize = GetLengthFieldSize();
SetLengthFieldSize(0);
GetNextRequest();
SetLengthFieldSize(aLengthFieldSize);
SendBytesToOpPtr anOp = new SendBytesToOp(mRequest, anAddr, mUDPSocket);
anOp->Run(GetMode(),GetTimeout());
Finish(WS_Success);
}