PullDicomFile.hpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. #pragma once
  2. class DelegateArgs;
  3. #include "BUSClient.MainEntry.hpp"
  4. namespace BUSC = ECOM::ServiceBus::Controller;
  5. #ifndef _ServiceBus_DLL
  6. #define _ServiceBus_API _declspec(dllimport)
  7. #else
  8. #define _ServiceBus_API _declspec(dllexport)
  9. #endif
  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 PullManager
  21. {
  22. public:
  23. static void SetLogFileName (const char * FileName);
  24. static void Prepare ();
  25. static void Quit ();
  26. // 设置缺省的超时, 单位: 毫秒
  27. static void SetDefTimeOut (int msTimeOut);
  28. static bool GetDicomFile (DString Message, ECOM::DICOM::DICOMFile * DicomFile);
  29. };
  30. class _ServiceBus_API PullDicomFile_Base
  31. {
  32. protected:
  33. PullDicomFile_Base (PCTSTR SourceID, PCTSTR TargetID);
  34. PullDicomFile_Base (const PullDicomFile_Base &) = delete;
  35. PullDicomFile_Base (PullDicomFile_Base &&) = delete;
  36. PullDicomFile_Base & operator = (const PullDicomFile_Base &) = delete;
  37. public:
  38. virtual ~PullDicomFile_Base ();
  39. protected:
  40. virtual std::unique_ptr <Controller::MessageClient> GetClient () = 0;
  41. public:
  42. int PullFile (DString SOPInstanceUID, int msTimeOut = gDefMSTimeOut);
  43. int PullFileEx (DString Message, int msTimeOut = gDefMSTimeOut);
  44. int PullFileHeadEx (DString Message, int msTimeOut = gDefMSTimeOut);
  45. int PullImageByStudy (DString StudyInstanceUID , int msTimeOut = gDefMSTimeOut);
  46. int PullImageBySeries (DString SeriesInstanceUID, int msTimeOut = gDefMSTimeOut);
  47. protected:
  48. void OnBUSDummy (const void * sender, EventArgs_BUSMessage * e);
  49. void OnBUSPushDicomFile (const void * sender, EventArgs_BUSMessage * e);
  50. public:
  51. VectorOfPtr <ECOM::DICOM::DICOMFile> m_arFile;
  52. protected:
  53. DString m_SourceID;
  54. DString m_TargetID;
  55. Controller::MessageReceiver * m_Receiver;
  56. protected:
  57. friend PullManager;
  58. static int gDefMSTimeOut;
  59. };
  60. class _ServiceBus_API PullDicomFile : public PullDicomFile_Base
  61. {
  62. public:
  63. PullDicomFile (PCTSTR SourceID, PCTSTR TargetID);
  64. PullDicomFile (const PullDicomFile &) = delete;
  65. PullDicomFile (PullDicomFile &&) = delete;
  66. PullDicomFile & operator = (const PullDicomFile &) = delete;
  67. protected:
  68. virtual std::unique_ptr <Controller::MessageClient> GetClient () override;
  69. };
  70. class _ServiceBus_API FixedPullDicomFile : public PullDicomFile_Base
  71. {
  72. public:
  73. FixedPullDicomFile (PCTSTR SourceID, PCTSTR TargetID, int Port = BUSC::LegacyReceivePort);
  74. FixedPullDicomFile (const FixedPullDicomFile &) = delete;
  75. FixedPullDicomFile (FixedPullDicomFile &&) = delete;
  76. FixedPullDicomFile & operator = (const FixedPullDicomFile &) = delete;
  77. protected:
  78. virtual std::unique_ptr <Controller::MessageClient> GetClient () override;
  79. };
  80. }
  81. }
  82. };