Go to the documentation of this file.
22 #ifndef ENGINE_JSON_REGISTRATION_SERVER_H
23 #define ENGINE_JSON_REGISTRATION_SERVER_H
25 #include <pistache/router.h>
26 #include <pistache/endpoint.h>
38 struct RequestHandler : Pistache::Http::Handler
40 HTTP_PROTOTYPE(RequestHandler);
43 ~RequestHandler()
override;
45 void onRequest(
const Pistache::Http::Request& req, Pistache::Http::ResponseWriter response)
override;
97 static std::string
tryInstantiate(
const std::string & initialAddress,
const unsigned numRetries);
163 static bool sendClientEngineRequest(
const std::string &address,
const engine_name_t &engineName,
const std::string &engineAddress,
const unsigned int numTries = 1,
const unsigned int waitTime = 0);
169 bool _serverRunning =
false;
174 std::string _address;
179 Pistache::Http::Endpoint _endpoint;
194 static std::unique_ptr<EngineJSONRegistrationServer> _instance;
205 #endif // ENGINE_JSON_REGISTRATION_SERVER_H
const std::string serverAddress() const
Get server address.
Definition: engine_json_registration_server.cpp:168
static constexpr std::string_view JSONEngineName
JSON Engine Name locator used during registration.
Definition: engine_json_registration_server.h:57
~EngineJSONRegistrationServer()
Definition: engine_json_registration_server.cpp:139
static std::string tryInstantiate(const std::string &initialAddress, const unsigned numRetries)
Attempts to instantiate and start the registration server.
Definition: engine_json_registration_server.cpp:81
static void clearInstance()
Delete Instance.
Definition: engine_json_registration_server.cpp:74
static EngineJSONRegistrationServer * getInstance()
Get Instance of EngineJSONRegistrationServer.
Definition: engine_json_registration_server.cpp:61
void shutdownServer()
Stop the Server.
Definition: engine_json_registration_server.cpp:157
static bool sendClientEngineRequest(const std::string &address, const engine_name_t &engineName, const std::string &engineAddress, const unsigned int numTries=1, const unsigned int waitTime=0)
Send Engine Name and address to specified address.
Definition: engine_json_registration_server.cpp:225
static constexpr std::string_view JSONAddress
JSON Engine Address locator used during registration.
Definition: engine_json_registration_server.h:62
Singleton. Creates an HTTP REST server to register newly created EngineJSONServers and store their ad...
Definition: engine_json_registration_server.h:33
size_t getNumWaitingEngines()
Get the number of engines that are still waiting for registration.
Definition: engine_json_registration_server.cpp:178
void startServerAsync()
Start the server if it's not already running.
Definition: engine_json_registration_server.cpp:146
static EngineJSONRegistrationServer * resetInstance(const std::string &serverAddress)
Reset EngineJSONRegistrationServer with the given address.
Definition: engine_json_registration_server.cpp:66
friend struct EngineJSONRegistrationServer::RequestHandler
Definition: engine_json_registration_server.h:202
EngineJSONRegistrationServer & operator=(const EngineJSONRegistrationServer &)=delete
bool isRunning() const
Returns true when server is running, false otherwise.
Definition: engine_json_registration_server.cpp:173
EngineJSONRegistrationServer(const EngineJSONRegistrationServer &)=delete
std::string requestEngine(const engine_name_t &engineName)
Request an engine's address. If available, erases entry from _registeredAddresses.
Definition: engine_json_registration_server.cpp:203
void registerEngineAddress(const engine_name_t &engineName, const std::string &address)
Register an engine's address.
Definition: engine_json_registration_server.cpp:216
std::string retrieveEngineAddress(const engine_name_t &engineName)
Retrieve a registered engine address. If available and non-empty, erase it from _registeredAddresses.
Definition: engine_json_registration_server.cpp:184
std::string EngineName
Corresponding engine.
Definition: datapack_interface.h:49