#pragma once class DelegateArgs; #include "BUSClient.MainEntry.hpp" namespace BUSC = ECOM::ServiceBus::Controller; #ifndef _ServiceBus_DLL #define _ServiceBus_API _declspec(dllimport) #else #define _ServiceBus_API _declspec(dllexport) #endif namespace ECOM { namespace ServiceBus { namespace Controller { class _ServiceBus_API MessageClient; }; namespace MemMapExchDicomFile { class _ServiceBus_API PullManager { public: static void SetLogFileName (const char * FileName); static void Prepare (); static void Quit (); // 设置缺省的超时, 单位: 毫秒 static void SetDefTimeOut (int msTimeOut); static bool GetDicomFile (DString Message, ECOM::DICOM::DICOMFile * DicomFile); }; class _ServiceBus_API PullDicomFile_Base { protected: PullDicomFile_Base (PCTSTR SourceID, PCTSTR TargetID); PullDicomFile_Base (const PullDicomFile_Base &) = delete; PullDicomFile_Base (PullDicomFile_Base &&) = delete; PullDicomFile_Base & operator = (const PullDicomFile_Base &) = delete; public: virtual ~PullDicomFile_Base (); protected: virtual std::unique_ptr GetClient () = 0; public: int PullFile (DString SOPInstanceUID, int msTimeOut = gDefMSTimeOut); int PullFileEx (DString Message, int msTimeOut = gDefMSTimeOut); int PullFileHeadEx (DString Message, int msTimeOut = gDefMSTimeOut); int PullImageByStudy (DString StudyInstanceUID , int msTimeOut = gDefMSTimeOut); int PullImageBySeries (DString SeriesInstanceUID, int msTimeOut = gDefMSTimeOut); protected: void OnBUSDummy (const void * sender, EventArgs_BUSMessage * e); void OnBUSPushDicomFile (const void * sender, EventArgs_BUSMessage * e); public: VectorOfPtr m_arFile; protected: DString m_SourceID; DString m_TargetID; Controller::MessageReceiver * m_Receiver; protected: friend PullManager; static int gDefMSTimeOut; }; class _ServiceBus_API PullDicomFile : public PullDicomFile_Base { public: PullDicomFile (PCTSTR SourceID, PCTSTR TargetID); PullDicomFile (const PullDicomFile &) = delete; PullDicomFile (PullDicomFile &&) = delete; PullDicomFile & operator = (const PullDicomFile &) = delete; protected: virtual std::unique_ptr GetClient () override; }; class _ServiceBus_API FixedPullDicomFile : public PullDicomFile_Base { public: FixedPullDicomFile (PCTSTR SourceID, PCTSTR TargetID, int Port = BUSC::LegacyReceivePort); FixedPullDicomFile (const FixedPullDicomFile &) = delete; FixedPullDicomFile (FixedPullDicomFile &&) = delete; FixedPullDicomFile & operator = (const FixedPullDicomFile &) = delete; protected: virtual std::unique_ptr GetClient () override; }; } } };