KRoleBlockProcess.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:2k
源码类别:

模拟服务器

开发平台:

C/C++

  1. // KRoleBlockProcess.h: interface for the KRoleBlockProcess class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_KROLEBLOCKPROCESS_H__880E1044_4D49_4BDC_BA62_6ABFCA94EAED__INCLUDED_)
  5. #define AFX_KROLEBLOCKPROCESS_H__880E1044_4D49_4BDC_BA62_6ABFCA94EAED__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. //#include "KRoleDBServer.h"
  10. #include <math.h>
  11. #include "KRoleDBHeader.h"
  12. class KRoleBlockProcess  
  13. {
  14. public:
  15. KRoleBlockProcess();
  16. KRoleBlockProcess(TStreamData * pData, size_t nStreamSize)
  17. {
  18. m_pProcessData = 0;
  19. m_nCurDataLen = 0;
  20. m_nStreamSize = 0;
  21. SetStream(pData, nStreamSize);
  22. }
  23. KRoleBlockProcess(size_t nStreamSize)
  24. {
  25. m_pProcessData = 0;
  26. m_nCurDataLen = 0;
  27. m_nStreamSize = 0;
  28. GenStream(nStreamSize);
  29. }
  30. virtual ~KRoleBlockProcess();
  31. unsigned long m_nStreamSize;
  32. //获得每块长度为nBlockSize大小的,第nNo块的KBlock
  33. size_t GetBlockPtr(KBlock * pBlock, unsigned long nNo, size_t nBlockSize);
  34. unsigned long GetBlockCount(size_t nBlockSize)
  35. {
  36. double fCount = m_nStreamSize* 1.0 / (nBlockSize - sizeof(KBlock) + 1);
  37. return (unsigned long )ceil(fCount);
  38. }
  39. //生成Stream
  40. unsigned long SetStream(TStreamData * pData, size_t nStreamSize);
  41. size_t GetStreamSize(){return m_nStreamSize;};
  42. unsigned long GenStream(size_t nStreamSize);
  43. //设置某一块
  44. unsigned long SetBlock(KBlock * pBlock, unsigned long nNo, size_t nBlockSize);
  45. unsigned long SetBlock(KBlock * pBlock);
  46. bool IsComplete()
  47. {
  48. if (!m_pProcessData) return false;
  49. if (m_pProcessData->nDataLen == m_nCurDataLen) return true;
  50. return false;
  51. }
  52. void * GetProcessData()
  53. {
  54. if (!m_pProcessData) return 0;
  55. if (!IsComplete()) return 0;
  56. return &m_pProcessData->pDataBuffer[0];
  57. }
  58. TStreamData * m_pProcessData;
  59. private:
  60. size_t   m_nCurDataLen;
  61. };
  62. #endif // !defined(AFX_KROLEBLOCKPROCESS_H__880E1044_4D49_4BDC_BA62_6ABFCA94EAED__INCLUDED_)