diff --git a/Modules/CppRestSdk/include/mitkIRESTManager.h b/Modules/CppRestSdk/include/mitkIRESTManager.h index de0d9cad30..288ee47c12 100644 --- a/Modules/CppRestSdk/include/mitkIRESTManager.h +++ b/Modules/CppRestSdk/include/mitkIRESTManager.h @@ -1,34 +1,31 @@ #ifndef mitkIRESTManager_h #define mitkIRESTManager_h #include #include #include "cpprest/uri.h" namespace mitk { class IRESTManager { public: virtual ~IRESTManager(); - virtual void TestFunctionManager() = 0; - //Functions for sendData() and receiveData() (sendRequest(), receiveRequest()?) - enum RequestType { get, post, put }; virtual void sendRequest(RequestType type) = 0; virtual void receiveRequest(web::uri uri) = 0; }; } // namespace mitk MITK_DECLARE_SERVICE_INTERFACE(mitk::IRESTManager, "org.mitk.IRESTManager") #endif diff --git a/Modules/CppRestSdk/include/mitkRESTManager.h b/Modules/CppRestSdk/include/mitkRESTManager.h index 01ad525501..02b0ec317e 100644 --- a/Modules/CppRestSdk/include/mitkRESTManager.h +++ b/Modules/CppRestSdk/include/mitkRESTManager.h @@ -1,27 +1,26 @@ #ifndef mitkRESTManager_h #define mitkRESTManager_h #include #include #include namespace mitk { class RESTManager : public IRESTManager { public: RESTManager(); ~RESTManager() override; - void TestFunctionManager() override; //calls RESTClient void sendRequest(RequestType type) override; //calls RESTServer void receiveRequest(web::uri uri) override; private: - std::map m_ClientMap; // Map with port client pairs + std::map m_ClientMap; // Map with port client pairs std::map m_ServerMap; // Map with port server pairs }; } // namespace mitk #endif // !mitkRESTManager_h diff --git a/Modules/CppRestSdk/include/mitkRESTServerMicroService.h b/Modules/CppRestSdk/include/mitkRESTServerMicroService.h index d8f34cd255..c3675da227 100644 --- a/Modules/CppRestSdk/include/mitkRESTServerMicroService.h +++ b/Modules/CppRestSdk/include/mitkRESTServerMicroService.h @@ -1,36 +1,37 @@ #ifndef mitkRESTServerMicroService_h #define mitkRESTServerMicroService_h #include "cpprest/asyncrt_utils.h" #include "cpprest/containerstream.h" #include "cpprest/filestream.h" #include "cpprest/http_listener.h" #include "cpprest/json.h" #include "cpprest/producerconsumerstream.h" #include "cpprest/uri.h" #include "MitkCppRestSdkExports.h" typedef web::http::experimental::listener::http_listener MitkListener; typedef web::http::http_request MitkRequest; typedef web::http::http_response MitkResponse; typedef web::http::methods MitkRESTMethods; typedef web::http::status_codes MitkRestStatusCodes; typedef web::json::json_exception MitkJsonException; namespace mitk { class RESTServerMicroService { public: RESTServerMicroService(web::uri uri); ~RESTServerMicroService(); - pplx::task mitk::RESTServerMicroService::openListener(); - void HandleGet(MitkRequest request); private: MitkListener m_Listener; + pplx::task openListener(); + pplx::task closeListener(); + void HandleGet(MitkRequest request); }; } // namespace mitk #endif \ No newline at end of file diff --git a/Modules/CppRestSdk/src/mitkCppRestSdkActivator.cpp b/Modules/CppRestSdk/src/mitkCppRestSdkActivator.cpp index 05d2ec4d21..10bd104f1d 100644 --- a/Modules/CppRestSdk/src/mitkCppRestSdkActivator.cpp +++ b/Modules/CppRestSdk/src/mitkCppRestSdkActivator.cpp @@ -1,36 +1,39 @@ #include "mitkCppRestSdkActivator.h" #include #include #include #include #include #include #include #include #include #include void MitkCppRestSdkActivator::Load(us::ModuleContext *context) { + //Registration of the RESTManagerMicroservice m_RESTManager.reset(new mitk::RESTManager); context->RegisterService(m_RESTManager.get()); + //Test use of the RESTManagerMicroservice, later done in Module us::ServiceReference refManager = context->GetServiceReference(); if (refManager) { auto serviceClient = context->GetService(refManager); if (serviceClient) { serviceClient->receiveRequest(L"http://localhost:8080"); + serviceClient->receiveRequest(L"http://localhost:8090"); } } } void MitkCppRestSdkActivator::Unload(us::ModuleContext *) { } US_EXPORT_MODULE_ACTIVATOR(MitkCppRestSdkActivator) diff --git a/Modules/CppRestSdk/src/mitkRESTManager.cpp b/Modules/CppRestSdk/src/mitkRESTManager.cpp index 64b3bcaa7e..c4d9834086 100644 --- a/Modules/CppRestSdk/src/mitkRESTManager.cpp +++ b/Modules/CppRestSdk/src/mitkRESTManager.cpp @@ -1,38 +1,32 @@ #include "mitkRESTManager.h" #include mitk::RESTManager::RESTManager() {} mitk::RESTManager::~RESTManager() {} -void mitk::RESTManager::TestFunctionManager() -{ - MITK_INFO << "Test for Manager"; - - MITK_INFO << "Here"; -} - void mitk::RESTManager::sendRequest(RequestType type) { switch (type) { case get: //Call get in mitkRESTClientMicroService break; case post: //Call post in mitkRESTClientMicroService break; case put: //Call put in mitkRESTClientMicroService break; } } void mitk::RESTManager::receiveRequest(web::uri uri) { + //New instance of RESTServerMicroservice in m_ServerMap, key is port of the request int port = uri.port(); RESTServerMicroService* server = new RESTServerMicroService(uri); m_ServerMap[port] = server; MITK_INFO < mitk::RESTServerMicroService::RESTServerMicroService(web::uri uri) : m_Listener(uri) { m_Listener.support(MitkRESTMethods::GET, std::bind(&RESTServerMicroService::HandleGet, this, std::placeholders::_1)); openListener(); } +mitk::RESTServerMicroService::~RESTServerMicroService() +{ + closeListener(); +} + pplx::task mitk::RESTServerMicroService::openListener() { return m_Listener.open(); } -mitk::RESTServerMicroService::~RESTServerMicroService() +pplx::task mitk::RESTServerMicroService::closeListener() { + return m_Listener.close(); } void mitk::RESTServerMicroService::HandleGet(MitkRequest request) { - MITK_INFO << "Test for Server"; + int port = m_Listener.uri().port(); + MITK_INFO << "Test for Server at port "<