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

IP电话/视频会议

开发平台:

Visual C++

  1. // PStartSendFile.cpp: implementation of the PStartSendFile class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "PStartSendFile.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. PStartSendFile::PStartSendFile()
  15. {
  16. this->Tag = PStartSendFileTAG;
  17. this->user_name = "";
  18. this->filename = "";
  19. this->file_id = 0;
  20. this->file_size = 0;
  21. this->recv_id = NULL;
  22. this->id_size = 0;
  23. }
  24. PStartSendFile::~PStartSendFile()
  25. {
  26. }
  27. bool PStartSendFile::assembleData( const char * user_name , const char * filename , int file_id , int file_size , int * recvid , int id_size )
  28. {
  29. int size = sizeof( int ) + strlen( user_name ) + sizeof( char ) + strlen( filename ) + sizeof( char ) + sizeof( int ) + sizeof( int ) + sizeof( int ) + sizeof( int ) * id_size;
  30. this->buffer.Resize( size );
  31. char * now = this->buffer.GetBuffer( );
  32. *( int * )now = this->Tag; now += sizeof( int );
  33. strcpy( now , user_name ); now += strlen( user_name ) + sizeof( char );
  34. strcpy( now , filename ); now += strlen( filename ) + sizeof( char );
  35. *( int * )now = file_id ; now += sizeof( int );
  36. *( int * )now = file_size; now += sizeof( int );
  37. *( int * )now = id_size; now += sizeof( int );
  38. if( id_size > 0 )
  39. memcpy( now , recvid , sizeof( int ) * id_size );
  40. return true;
  41. }
  42. bool PStartSendFile::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->filename = buffer ; buffer += this->filename.GetLength( ) + sizeof( char );
  49. this->file_id = *( int * )buffer; buffer += sizeof( int );
  50. this->file_size = *( int * )buffer; buffer += sizeof( int );
  51. this->id_size = *( int * )buffer ; buffer += sizeof( int );
  52. if( this->id_size > 0 )
  53. this->recv_id = ( int * )buffer;
  54. else 
  55. this->recv_id = NULL;
  56. return true;
  57. }