PushDicomFile.hpp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #pragma once
  2. #include "BUSClient.MainEntry.hpp"
  3. namespace BUSC = ECOM::ServiceBus::Controller;
  4. #ifndef _ServiceBus_DLL
  5. #define _ServiceBus_API _declspec(dllimport)
  6. #else
  7. #define _ServiceBus_API _declspec(dllexport)
  8. #endif
  9. class PushFileServer;
  10. namespace ECOM
  11. {
  12. namespace ServiceBus
  13. {
  14. namespace Controller
  15. {
  16. class _ServiceBus_API MessageClient;
  17. };
  18. namespace MemMapExchDicomFile
  19. {
  20. class _ServiceBus_API PushManager
  21. {
  22. public:
  23. static void SetLogFileName (PCTSTR FileName);
  24. static void Prepare ();
  25. static void Quit ();
  26. // 设置缺省的超时, 单位: 毫秒
  27. static void SetDefTimeOut (int msTimeOut);
  28. };
  29. class _ServiceBus_API PushDicomFile_Base
  30. {
  31. protected:
  32. PushDicomFile_Base (PCTSTR TargetID);
  33. public:
  34. virtual ~PushDicomFile_Base ();
  35. public:
  36. void SetTransactionID (DWORD ID);
  37. // 立即发送
  38. bool PushFile (ECOM::DICOM::DICOMFile * DicomFile, int msTimeOut = gDefMSTimeOut);
  39. // 立即发送, 带附加参数
  40. bool PushFile (ECOM::DICOM::DICOMFile * DicomFile, DString UserInfo, int msTimeOut = gDefMSTimeOut);
  41. // 通知接收方, 交易开始
  42. void BeginTransaction ();
  43. // 通知接收方, 交易结束, 立即发送
  44. void EndTransactionNow ();
  45. protected:
  46. DWORD m_TransactionID;
  47. bool m_bTargetOnline;
  48. DString m_TargetID;
  49. Controller::MessageClient * m_Client;
  50. protected:
  51. friend PushManager;
  52. static int gDefMSTimeOut;
  53. };
  54. class _ServiceBus_API PushDicomFile : public PushDicomFile_Base
  55. {
  56. public:
  57. PushDicomFile (PCTSTR SourceID, PCTSTR TargetID);
  58. PushDicomFile (const PushDicomFile &) = delete;
  59. PushDicomFile (PushDicomFile &&) = delete;
  60. PushDicomFile & operator = (const PushDicomFile &) = delete;
  61. public:
  62. // 后台发送
  63. bool PostFile (ECOM::DICOM::DICOMFile * DicomFile);
  64. // 通知接收方, 交易结束
  65. void EndTransaction ();
  66. friend class PushFileServer;
  67. };
  68. class _ServiceBus_API FixedPushDicomFile : public PushDicomFile_Base
  69. {
  70. public:
  71. FixedPushDicomFile (PCTSTR SourceID, PCTSTR TargetID, int Port = BUSC::LegacySendPort);
  72. FixedPushDicomFile (const FixedPushDicomFile &) = delete;
  73. FixedPushDicomFile (FixedPushDicomFile &&) = delete;
  74. FixedPushDicomFile & operator = (const FixedPushDicomFile &) = delete;
  75. public:
  76. // 后台发送
  77. bool PostFile (ECOM::DICOM::DICOMFile * DicomFile);
  78. // 通知接收方, 交易结束
  79. void EndTransaction ();
  80. private:
  81. int m_Port;
  82. };
  83. }
  84. }
  85. };