SCF.hpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. #include <string>
  2. #include <functional>
  3. #include <memory>
  4. #define SCF_API
  5. #include "SCF.Define.hpp"
  6. namespace CCOS
  7. {
  8. namespace Dev
  9. {
  10. namespace Communication
  11. {
  12. namespace Detail
  13. {
  14. class SCFDetail; // ÄÚ²¿ÊµÏÖÕæÕý¹¦ÄÜµÄ SCF
  15. }
  16. //-----------------------------------------------------------------------------
  17. // SCF
  18. //-----------------------------------------------------------------------------
  19. class SCF_API SCF
  20. {
  21. private:
  22. std::shared_ptr <Detail::SCFDetail> m_SCFDetail;
  23. public:
  24. SCF ();
  25. ~SCF ();
  26. public:
  27. SCF (const SCF & from) = default;
  28. //SCF (SCF && from) = default;
  29. //SCF & operator = (SCF && from) = default;
  30. SCF & operator = (const SCF & from) = default;
  31. public:
  32. operator bool () const
  33. {
  34. return bool(m_SCFDetail);
  35. }
  36. public:
  37. static SCF FromDLL (const char * DllName);
  38. public:
  39. int Connect (std::string strProfile, tPacketPredate Pr, _SCF_Transfertype TransferType, DWORD msTimeOut);
  40. void Disconnect ();
  41. bool isConnected () const;
  42. bool DecodePack(bool action);
  43. public:
  44. class SCF_API IO
  45. {
  46. friend SCF;
  47. std::shared_ptr <Detail::SCFDetail> m_SCFDetail;
  48. private:
  49. IO (std::shared_ptr <Detail::SCFDetail> SCF, int msTimeOut);
  50. public:
  51. ~IO ();
  52. public:
  53. IO & SendPacket (const char * Packet, DWORD length, DWORD msTimeOut, int&retLength);
  54. IO & ReceivePacket (char * Packet, DWORD length, DWORD msTimeOut, int& retLength);
  55. };
  56. public:
  57. IO Lock (int msTimeOut);
  58. std::function <void ()> OnPassiveDisconnected;
  59. public:
  60. class SCF_API tQueue
  61. {
  62. friend SCF;
  63. private:
  64. tQueue () = default;
  65. std::shared_ptr <Detail::SCFDetail> m_SCFDetail;
  66. public:
  67. bool isEmpty () const;
  68. int GetNbOfPackt () const;
  69. // void Clear ();
  70. int Enqueue (const char * Packet, DWORD length);
  71. int Dequeue (char * Packet, DWORD length, DWORD msTimeOut);
  72. std::function <void ()> OnNewPacket;
  73. } Queue;
  74. };
  75. }
  76. }
  77. }