PSendFile.cpp
上传用户:popouu88
上传日期:2013-02-11
资源大小:2894k
文件大小:2k
源码类别:

IP电话/视频会议

开发平台:

Visual C++

  1. // PSendFile.cpp: implementation of the PSendFile class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "PSendFile.h"
  6. #ifdef _DEBUG
  7. #undef THIS_FILE
  8. static char THIS_FILE[]=__FILE__;
  9. #define new DEBUG_NEW
  10. #endif
  11. //////////////////////////////////////////////////////////////////////
  12. // Construction/Destruction
  13. //////////////////////////////////////////////////////////////////////
  14. PSendFile::PSendFile()
  15. {
  16. this->Tag = PSendFileTAG;
  17. this->user_name = "";
  18. this->fbuffer = NULL;
  19. this->fsize = 0;
  20. this->id_list = NULL;
  21. this->id_size = 0;
  22. }
  23. PSendFile::~PSendFile()
  24. {
  25. }
  26. bool PSendFile::assembleData( const char * user_name , int file_id , char * fbuffer , int fsize , int * id_list , int id_size )
  27. {
  28. this->buffer.Resize( sizeof( int ) + strlen( user_name ) + sizeof( char ) + sizeof( int ) + sizeof( int ) + sizeof( int ) * fsize + sizeof( int ) + sizeof( int ) * id_size );
  29. char * now = this->buffer.GetBuffer( );
  30. *( int * )now = this->Tag; now += sizeof( int );
  31. strcpy( now , user_name ); now += strlen( user_name ) + sizeof( char );
  32. *( int * )now = file_id; now += sizeof( int );
  33. *( int * )now = fsize; now += sizeof( int );
  34. if( fsize )
  35. memcpy( now , fbuffer , fsize );
  36. now += sizeof( int ) * fsize;
  37. *( int * )now = id_size; now += sizeof( int );
  38. if( id_size )
  39. memcpy( now , id_list , sizeof( int ) * id_size );
  40. return true;
  41. }
  42. bool PSendFile::parseData( char * buffer , int size )
  43. {
  44. if( * ( int * )buffer != this->Tag )
  45. return false;
  46. buffer += sizeof( int );
  47. this->user_name = buffer; buffer += this->user_name.GetLength( ) + sizeof( char );
  48. this->file_id = *( int * )buffer;  buffer += sizeof( int );
  49. this->fsize = *( int * )buffer; buffer += sizeof( int );
  50. this->fbuffer = this->fsize ? buffer : NULL; buffer += sizeof( int ) * fsize;
  51. this->id_size = *( int * )buffer ; buffer += sizeof( int );
  52. this->id_list = this->id_size ? ( int * )buffer : NULL;
  53. return true;
  54. }