ソースを参照

Refactored to allow DataExchange in host and app.

Yves 15 年 前
コミット
e78c2955dc

+ 16 - 0
Plugins/org.commontk.dicom.examplehost/ctkDicomExampleHost.cpp

@@ -71,3 +71,19 @@ void ctkDicomExampleHost::forwardConsoleOutput()
     std::cout << line.toStdString();
   }
 }
+
+bool ctkDicomExampleHost::notifyDataAvailable(ctkDicomWG23::AvailableData data, bool lastData)
+{
+  return false;
+}
+
+QList<ctkDicomWG23::ObjectLocator>* ctkDicomExampleHost::getData(
+  QList<QUuid> objectUUIDs, 
+  QList<QString> acceptableTransferSyntaxUIDs, 
+  bool includeBulkData)
+{
+  return NULL;
+}
+void ctkDicomExampleHost::releaseData(QList<QUuid> objectUUIDs)
+{
+}

+ 8 - 0
Plugins/org.commontk.dicom.examplehost/ctkDicomExampleHost.h

@@ -20,6 +20,14 @@ public:
     virtual QString getOutputLocation(const QStringList& /*preferredProtocols*/) { return ""; }
     virtual void notifyStateChanged(ctkDicomWG23::State state);
     virtual void notifyStatus(const ctkDicomWG23::Status& status);
+    // exchange methods
+    virtual bool notifyDataAvailable(ctkDicomWG23::AvailableData data, bool lastData);
+    virtual QList<ctkDicomWG23::ObjectLocator>* getData(
+      QList<QUuid> objectUUIDs, 
+      QList<QString> acceptableTransferSyntaxUIDs, 
+      bool includeBulkData);
+    virtual void releaseData(QList<QUuid> objectUUIDs);
+    
     const QProcess& getAppProcess() const { return appProcess; }
     ~ctkDicomExampleHost();
 

+ 2 - 2
Plugins/org.commontk.dicom.wg23.app/ctkDicomAppServerPrivate.cpp

@@ -63,8 +63,8 @@ void ctkDicomAppServerPrivate::incomingSoapMessage(
     
     ctkAppSoapMessageProcessor* appProcessor = new ctkAppSoapMessageProcessor( appInterface );
     processors.push_back(appProcessor);
-    //ctkExchangeSoapMessageProcessor exchangeProcessor( appInterface );
-    //processors.push_back(exchangeProcessor);
+    ctkExchangeSoapMessageProcessor* exchangeProcessor = new ctkExchangeSoapMessageProcessor( appInterface );
+    processors.push_back(exchangeProcessor);
   }
   
   processors.process(message, reply);

+ 22 - 2
Plugins/org.commontk.dicom.wg23.app/ctkDicomHostService.cpp

@@ -26,10 +26,10 @@
 #include "ctkDicomWG23TypesHelper.h"
 
 ctkDicomHostService::ctkDicomHostService(ushort port):
-    ctkDicomExchangeService(port), d(new ctkDicomServicePrivate(port))
+    service(ctkDicomExchangeService(port)), d(new ctkDicomServicePrivate(port))
 {
-
 }
+
 ctkDicomHostService::~ctkDicomHostService()
 {
 }
@@ -79,3 +79,23 @@ void ctkDicomHostService::notifyStatus(const ctkDicomWG23::Status& status)
   QtSoapStruct* input = new ctkDicomSoapStatus("status", status);
   d->askHost("notifyStatus", input);
 }
+
+// Exchange methods
+
+bool ctkDicomHostService::notifyDataAvailable(ctkDicomWG23::AvailableData data, bool lastData)
+{
+  return service.notifyDataAvailable(data, lastData);
+}
+
+QList<ctkDicomWG23::ObjectLocator>* ctkDicomHostService::getData(
+  QList<QUuid> objectUUIDs, 
+  QList<QString> acceptableTransferSyntaxUIDs, 
+  bool includeBulkData)
+{
+  return service.getData(objectUUIDs, acceptableTransferSyntaxUIDs, includeBulkData);
+}
+
+void ctkDicomHostService::releaseData(QList<QUuid> objectUUIDs)
+{
+  service.releaseData(objectUUIDs);
+}

+ 11 - 3
Plugins/org.commontk.dicom.wg23.app/ctkDicomHostService.h

@@ -27,9 +27,7 @@
 #include <ctkDicomExchangeService.h>
 #include <org_commontk_dicom_wg23_app_Export.h>
 
-
-
-class org_commontk_dicom_wg23_app_EXPORT ctkDicomHostService : public ctkDicomExchangeService,public ctkDicomHostInterface
+class org_commontk_dicom_wg23_app_EXPORT ctkDicomHostService : public ctkDicomHostInterface
 {
 
 public:
@@ -42,9 +40,19 @@ public:
   void notifyStateChanged(ctkDicomWG23::State state);
   void notifyStatus(const ctkDicomWG23::Status& status);
 
+  // Exchange methods
+  bool notifyDataAvailable(ctkDicomWG23::AvailableData data, bool lastData);
+  QList<ctkDicomWG23::ObjectLocator>* getData(
+    QList<QUuid> objectUUIDs, 
+    QList<QString> acceptableTransferSyntaxUIDs, 
+    bool includeBulkData);
+  void releaseData(QList<QUuid> objectUUIDs);
+
 private:
   ctkDicomServicePrivate * d;
 
+  ctkDicomExchangeService service;
+
 };
 
 #endif // CTKDICOMHOSTSERVICE_H

+ 2 - 2
Plugins/org.commontk.dicom.wg23.core/ctkDicomAppInterface.h

@@ -31,7 +31,7 @@
 
 #include <org_commontk_dicom_wg23_core_Export.h>
 
-class org_commontk_dicom_wg23_core_EXPORT ctkDicomAppInterface : public QObject
+class org_commontk_dicom_wg23_core_EXPORT ctkDicomAppInterface : public ctkDicomExchangeInterface
 {
   Q_OBJECT
 
@@ -43,7 +43,7 @@ public:
   virtual bool bringToFront(const QRect& requestedScreenArea) = 0;
 
   // Data exchange interface methods
-  // ...
+  // inherited from ctkDicomExchangeInterface
 
 };
 

+ 8 - 7
Plugins/org.commontk.dicom.wg23.core/ctkDicomExchangeInterface.h

@@ -36,20 +36,21 @@ class org_commontk_dicom_wg23_core_EXPORT ctkDicomExchangeInterface : public QOb
 public:
 
   // Data exchange interface methods
-  //
 
-  virtual bool notifyDataAvailable(ctkDicomWG23::AvailableData data, bool lastData)=0;
+  virtual bool notifyDataAvailable(ctkDicomWG23::AvailableData data, bool lastData) = 0;
 
-  virtual QList<ctkDicomWG23::ObjectLocator> *getData(QList<QUuid> objectUUIDs, QList<QString> acceptableTransferSyntaxUIDs, bool includeBulkData) = 0;
+  virtual QList<ctkDicomWG23::ObjectLocator>* getData(
+    QList<QUuid> objectUUIDs, 
+    QList<QString> acceptableTransferSyntaxUIDs, 
+    bool includeBulkData) = 0;
 
-  //    8.3.3 getAsModels(objectUUIDs : ArrayOfUUID, classUID : UID, supportedInfosetTypes : ArrayOfMimeType) : ModelSetDescriptor	33
+  virtual void releaseData(QList<QUuid> objectUUIDs) = 0;
+
+//    8.3.3 getAsModels(objectUUIDs : ArrayOfUUID, classUID : UID, supportedInfosetTypes : ArrayOfMimeType) : ModelSetDescriptor	33
 //    8.3.4 queryModel(models : ArrayOfUUID, xpaths : ArrayOfString) : ArrayOfQueryResult	34
 //    8.3.5 queryInfoset(models : ArrayOfUUID, xpaths : ArrayOfString) : ArrayOfQueryResultInfoset	34
-//    8.3.6 releaseData(objectUUIDs : ArrayOfUUID): void	35
-  virtual void releaseData(QList<QUuid> objectUUIDs) = 0;
 //    8.3.7 releaseModels(objectUUIDs : ArrayOfUUID): void
 
-  virtual ~ctkDicomExchangeInterface() {}
 };
 
 #endif // ctkDicomExchangeInterface_H

+ 2 - 2
Plugins/org.commontk.dicom.wg23.core/ctkDicomHostInterface.h

@@ -31,7 +31,7 @@
 
 #include <org_commontk_dicom_wg23_core_Export.h>
 
-class org_commontk_dicom_wg23_core_EXPORT ctkDicomHostInterface: public QObject
+class org_commontk_dicom_wg23_core_EXPORT ctkDicomHostInterface: public ctkDicomExchangeInterface
 {
   Q_OBJECT
 
@@ -45,7 +45,7 @@ public:
   virtual void notifyStatus(const ctkDicomWG23::Status& status) = 0;
 
   // Data exchange interface methods
-  // ...
+  // inherited from ctkDicomExchangeInterface
 
 };
 

+ 2 - 1
Plugins/org.commontk.dicom.wg23.core/ctkExchangeSoapMessageProcessor.h

@@ -24,8 +24,9 @@
 
 #include "ctkSoapMessageProcessor.h"
 #include "ctkDicomExchangeInterface.h"
+#include <org_commontk_dicom_wg23_core_Export.h>
 
-class ctkExchangeSoapMessageProcessor : public ctkSoapMessageProcessor
+class org_commontk_dicom_wg23_core_EXPORT ctkExchangeSoapMessageProcessor : public ctkSoapMessageProcessor
 {
 
 public:

+ 22 - 2
Plugins/org.commontk.dicom.wg23.host/ctkDicomAppService.cpp

@@ -26,10 +26,10 @@
 #include "ctkDicomWG23TypesHelper.h"
 
 ctkDicomAppService::ctkDicomAppService(ushort port):
-  ctkDicomExchangeService(port), d(new ctkDicomServicePrivate(port))
+  service(ctkDicomExchangeService(port)), d(new ctkDicomServicePrivate(port))
 {
-
 }
+
 ctkDicomAppService::~ctkDicomAppService()
 {
 }
@@ -57,3 +57,23 @@ bool ctkDicomAppService::bringToFront(const QRect& requestedScreenArea)
   const QtSoapType & result = d->askHost("bringToFront", input);
   return ctkDicomSoapBool::getBool(result);
 }
+
+// Exchange methods
+
+bool ctkDicomAppService::notifyDataAvailable(ctkDicomWG23::AvailableData data, bool lastData)
+{
+  return service.notifyDataAvailable(data, lastData);
+}
+
+QList<ctkDicomWG23::ObjectLocator>* ctkDicomAppService::getData(
+  QList<QUuid> objectUUIDs, 
+  QList<QString> acceptableTransferSyntaxUIDs, 
+  bool includeBulkData)
+{
+  return service.getData(objectUUIDs, acceptableTransferSyntaxUIDs, includeBulkData);
+}
+
+void ctkDicomAppService::releaseData(QList<QUuid> objectUUIDs)
+{
+  service.releaseData(objectUUIDs);
+}

+ 11 - 3
Plugins/org.commontk.dicom.wg23.host/ctkDicomAppService.h

@@ -27,9 +27,7 @@
 #include <ctkDicomExchangeService.h>
 #include <org_commontk_dicom_wg23_host_Export.h>
 
-
-class org_commontk_dicom_wg23_host_EXPORT ctkDicomAppService : public ctkDicomExchangeService,
-                                                               public ctkDicomAppInterface
+class org_commontk_dicom_wg23_host_EXPORT ctkDicomAppService : public ctkDicomAppInterface
 {
 
 public:
@@ -40,8 +38,18 @@ public:
   bool setState(ctkDicomWG23::State newState);
   bool bringToFront(const QRect& requestedScreenArea);
 
+  // Exchange methods
+  bool notifyDataAvailable(ctkDicomWG23::AvailableData data, bool lastData);
+  QList<ctkDicomWG23::ObjectLocator>* getData(
+    QList<QUuid> objectUUIDs, 
+    QList<QString> acceptableTransferSyntaxUIDs, 
+    bool includeBulkData);
+  void releaseData(QList<QUuid> objectUUIDs);
+
 private:
   ctkDicomServicePrivate * d;
+
+  ctkDicomExchangeService service;
 };
 
 #endif // CTKDICOMAPPSERVICE_H

+ 2 - 2
Plugins/org.commontk.dicom.wg23.host/ctkDicomHostServerPrivate.cpp

@@ -45,8 +45,8 @@ ctkDicomHostServerPrivate::ctkDicomHostServerPrivate(ctkDicomHostInterface* host
 
   ctkHostSoapMessageProcessor* hostProcessor = new ctkHostSoapMessageProcessor( hostInterface );
   processors.push_back(hostProcessor);
-  //ctkExchangeSoapMessageProcessor exchangeProcessor( hostInterface );
-  //processors.push_back(exchangeProcessor);
+  ctkExchangeSoapMessageProcessor* exchangeProcessor = new ctkExchangeSoapMessageProcessor( hostInterface );
+  processors.push_back(exchangeProcessor);
 }
 
 void ctkDicomHostServerPrivate::incomingSoapMessage(

+ 16 - 0
Plugins/org.commontk.example.dicomapp/ctkExampleDicomAppLogic.cpp

@@ -90,3 +90,19 @@ void ctkExampleDicomAppLogic::changeState(int anewstate)
     do_something();
   }
 }
+
+bool ctkExampleDicomAppLogic::notifyDataAvailable(ctkDicomWG23::AvailableData data, bool lastData)
+{
+  return false;
+}
+
+QList<ctkDicomWG23::ObjectLocator>* ctkExampleDicomAppLogic::getData(
+  QList<QUuid> objectUUIDs, 
+  QList<QString> acceptableTransferSyntaxUIDs, 
+  bool includeBulkData)
+{
+  return NULL;
+}
+void ctkExampleDicomAppLogic::releaseData(QList<QUuid> objectUUIDs)
+{
+}

+ 6 - 0
Plugins/org.commontk.example.dicomapp/ctkExampleDicomAppLogic_p.h

@@ -70,6 +70,12 @@ public:
   bool bringToFront(const QRect& requestedScreenArea);
 
   // ctkDicomExchangeInterface
+  bool notifyDataAvailable(ctkDicomWG23::AvailableData data, bool lastData);
+  QList<ctkDicomWG23::ObjectLocator>* getData(
+    QList<QUuid> objectUUIDs, 
+    QList<QString> acceptableTransferSyntaxUIDs, 
+    bool includeBulkData);
+  void releaseData(QList<QUuid> objectUUIDs);
 
   // some logic
   void do_something();