예제 #1
0
//----------------------------------------------------------------------------------
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;
}
예제 #2
0
//---------------------------------------------------------------------
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();
}