SCF.hpp 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. #pragma once
  2. #include <string>
  3. #include <functional>
  4. #include <memory>
  5. #pragma warning (disable:4251)
  6. #ifndef SCF_EXPORTS
  7. #ifdef _WIN64
  8. #ifdef _DEBUG
  9. #pragma comment(lib, "DIOS.Dev.SCFX64D.lib")
  10. #else
  11. #pragma comment(lib, "DIOS.Dev.SCFX64.lib")
  12. #endif
  13. #else
  14. #ifdef _DEBUG
  15. #pragma comment(lib, "DIOS.Dev.SCFXD.lib")
  16. #else
  17. #pragma comment(lib, "DIOS.Dev.SCFX.lib")
  18. #endif
  19. #endif
  20. #endif
  21. #ifdef SCF_EXPORTS
  22. #define SCF_API __declspec (dllexport)
  23. #else
  24. #define SCF_API __declspec (dllimport)
  25. #endif
  26. #include "SCF.Define.hpp"
  27. namespace DIOS
  28. {
  29. namespace Dev
  30. {
  31. namespace Communication
  32. {
  33. namespace Detail
  34. {
  35. class SCFDetail; // ÄÚ²¿ÊµÏÖÕæÕý¹¦ÄÜµÄ SCF
  36. }
  37. //-----------------------------------------------------------------------------
  38. // SCF
  39. //-----------------------------------------------------------------------------
  40. class SCF_API SCF
  41. {
  42. private:
  43. std::shared_ptr <Detail::SCFDetail> m_SCFDetail;
  44. public:
  45. SCF ();
  46. ~SCF ();
  47. public:
  48. SCF (const SCF & from) = default;
  49. //SCF (SCF && from) = default;
  50. //SCF & operator = (SCF && from) = default;
  51. SCF & operator = (const SCF & from) = default;
  52. public:
  53. operator bool () const
  54. {
  55. return bool(m_SCFDetail);
  56. }
  57. public:
  58. static SCF FromDLL (const char * DllName);
  59. public:
  60. int Connect (std::string strProfile, tPacketPredate Pr, _SCF_Transfertype TransferType, DWORD msTimeOut);
  61. void Disconnect ();
  62. bool isConnected () const;
  63. public:
  64. class SCF_API IO
  65. {
  66. friend SCF;
  67. std::shared_ptr <Detail::SCFDetail> m_SCFDetail;
  68. private:
  69. IO (std::shared_ptr <Detail::SCFDetail> SCF, int msTimeOut);
  70. public:
  71. ~IO ();
  72. public:
  73. IO & SendPacket (const char * Packet, DWORD length, DWORD msTimeOut, int&retLength);
  74. IO & ReceivePacket (char * Packet, DWORD length, DWORD msTimeOut, int& retLength);
  75. };
  76. public:
  77. IO Lock (int msTimeOut);
  78. std::function <void ()> OnPassiveDisconnected;
  79. public:
  80. class SCF_API tQueue
  81. {
  82. friend SCF;
  83. private:
  84. tQueue () = default;
  85. std::shared_ptr <Detail::SCFDetail> m_SCFDetail;
  86. public:
  87. bool isEmpty () const;
  88. int GetNbOfPackt () const;
  89. // void Clear ();
  90. int Enqueue (const char * Packet, DWORD length);
  91. int Dequeue (char * Packet, DWORD length, DWORD msTimeOut);
  92. std::function <void ()> OnNewPacket;
  93. } Queue;
  94. };
  95. }
  96. }
  97. }