#pragma once #include "BUSClient.MainEntry.hpp" namespace BUSC = ECOM::ServiceBus::Controller; #ifndef _ServiceBus_DLL #define _ServiceBus_API _declspec(dllimport) #else #define _ServiceBus_API _declspec(dllexport) #endif class PushFileServer; namespace ECOM { namespace ServiceBus { namespace Controller { class _ServiceBus_API MessageClient; }; namespace MemMapExchDicomFile { class _ServiceBus_API PushManager { public: static void SetLogFileName (PCTSTR FileName); static void Prepare (); static void Quit (); // 设置缺省的超时, 单位: 毫秒 static void SetDefTimeOut (int msTimeOut); }; class _ServiceBus_API PushDicomFile_Base { protected: PushDicomFile_Base (PCTSTR TargetID); public: virtual ~PushDicomFile_Base (); public: void SetTransactionID (DWORD ID); // 立即发送 bool PushFile (ECOM::DICOM::DICOMFile * DicomFile, int msTimeOut = gDefMSTimeOut); // 立即发送, 带附加参数 bool PushFile (ECOM::DICOM::DICOMFile * DicomFile, DString UserInfo, int msTimeOut = gDefMSTimeOut); // 通知接收方, 交易开始 void BeginTransaction (); // 通知接收方, 交易结束, 立即发送 void EndTransactionNow (); protected: DWORD m_TransactionID; bool m_bTargetOnline; DString m_TargetID; Controller::MessageClient * m_Client; protected: friend PushManager; static int gDefMSTimeOut; }; class _ServiceBus_API PushDicomFile : public PushDicomFile_Base { public: PushDicomFile (PCTSTR SourceID, PCTSTR TargetID); PushDicomFile (const PushDicomFile &) = delete; PushDicomFile (PushDicomFile &&) = delete; PushDicomFile & operator = (const PushDicomFile &) = delete; public: // 后台发送 bool PostFile (ECOM::DICOM::DICOMFile * DicomFile); // 通知接收方, 交易结束 void EndTransaction (); friend class PushFileServer; }; class _ServiceBus_API FixedPushDicomFile : public PushDicomFile_Base { public: FixedPushDicomFile (PCTSTR SourceID, PCTSTR TargetID, int Port = BUSC::LegacySendPort); FixedPushDicomFile (const FixedPushDicomFile &) = delete; FixedPushDicomFile (FixedPushDicomFile &&) = delete; FixedPushDicomFile & operator = (const FixedPushDicomFile &) = delete; public: // 后台发送 bool PostFile (ECOM::DICOM::DICOMFile * DicomFile); // 通知接收方, 交易结束 void EndTransaction (); private: int m_Port; }; } } };