//---------------------------------------------------------------------------------- TContainer TBasePacket_PCS::Pack() { TBreakPacket bp; bp.PushBack( (char*)&mType, sizeof(mType)); TContainer fromInherit = PackInherit(); bp.PushBack( fromInherit.GetPtr(), fromInherit.GetSize() ); bp.Collect(); TContainer result; result.Entrust( (char*)bp.GetCollectPtr(), bp.GetSize() ); bp.UnlinkCollect(); return result; }
//--------------------------------------------------------------------- void TSession::Send( TBreakPacket& bp, bool check ) { if( check ) { // Data + crc8(Data) => Encrypt bp.CopyInBuffer( mBuffer ); unsigned char crc8; mCalcCRC8.Calc( mBuffer.GetPtr(), mBuffer.GetSize(), crc8 ); bp.PushBack( (char*) &crc8, sizeof( crc8 ) ); bp.CopyInBuffer( mBuffer ); mSendAES.Encrypt( mBuffer.GetPtr(), mBuffer.GetSize(), mEncrypt ); bp.Reset(); bp.PushBack( (char*) mEncrypt.GetPtr(), mEncrypt.GetSize() ); } SendData( eData, bp, check ); // гарантия того что пакет дойдет // иначе сессия на той стороне не освежит время if( check ) RefreshLastTime(); }