Fledge
An open source edge computing platform for industrial users
management_api.h
1 #ifndef _MANAGEMENT_API_H
2 #define _MANAGEMENT_API_H
3 /*
4  * Fledge storage service.
5  *
6  * Copyright (c) 2017 OSisoft, LLC
7  *
8  * Released under the Apache 2.0 Licence
9  *
10  * Author: Mark Riddoch
11  */
12 #include <json_provider.h>
13 #include <service_handler.h>
14 #include <server_http.hpp>
15 #include <logger.h>
16 #include <string>
17 #include <time.h>
18 #include <thread>
19 
20 #define PING "/fledge/service/ping"
21 #define SERVICE_SHUTDOWN "/fledge/service/shutdown"
22 #define CONFIG_CHANGE "/fledge/change"
23 #define CONFIG_CHILD_CREATE "/fledge/child_create"
24 #define CONFIG_CHILD_DELETE "/fledge/child_delete"
25 #define SECURITY_CHANGE "^/fledge/security$"
26 
27 using HttpServer = SimpleWeb::Server<SimpleWeb::HTTP>;
28 
33  public:
34  ManagementApi(const std::string& name, const unsigned short port);
36  static ManagementApi *getInstance();
37  void start();
38  void startServer();
39  void stop();
40  void stopServer();
41  void registerStats(JSONProvider *statsProvider);
42  void registerService(ServiceHandler *serviceHandler) {
43  m_serviceHandler = serviceHandler;
44  }
45  unsigned short getListenerPort() {
46  return m_server->getLocalPort();
47  }
48  void ping(std::shared_ptr<HttpServer::Response> response, std::shared_ptr<HttpServer::Request> request);
49  void shutdown(std::shared_ptr<HttpServer::Response> response, std::shared_ptr<HttpServer::Request> request);
50  void configChange(std::shared_ptr<HttpServer::Response> response, std::shared_ptr<HttpServer::Request> request);
51  void configChildCreate(std::shared_ptr<HttpServer::Response> response, std::shared_ptr<HttpServer::Request> request);
52  void configChildDelete(std::shared_ptr<HttpServer::Response> response, std::shared_ptr<HttpServer::Request> request);
53  void securityChange(std::shared_ptr<HttpServer::Response> response, std::shared_ptr<HttpServer::Request> request);
54 
55  protected:
56  static ManagementApi *m_instance;
57  std::string m_name;
58  Logger *m_logger;
59  time_t m_startTime;
60  HttpServer *m_server;
61  JSONProvider *m_statsProvider;
62  ServiceHandler *m_serviceHandler;
63  std::thread *m_thread;
64  private:
65  void respond(std::shared_ptr<HttpServer::Response>, const std::string&);
66 };
67 #endif
Fledge Logger class used to log to syslog.
Definition: logger.h:26
void registerStats(JSONProvider *statsProvider)
Register a statistics provider.
Definition: management_api.cpp:149
void securityChange(std::shared_ptr< HttpServer::Response > response, std::shared_ptr< HttpServer::Request > request)
Received a security change request, construct a reply and return to caller.
Definition: management_api.cpp:294
Management API server for a C++ microservice.
Definition: management_api.h:32
void shutdown(std::shared_ptr< HttpServer::Response > response, std::shared_ptr< HttpServer::Request > request)
Received a shutdown request, construct a reply and return to caller.
Definition: management_api.cpp:179
Definition: json_provider.h:14
ServiceHandler abstract class - the interface that services using the management API must provide...
Definition: service_handler.h:20
void configChange(std::shared_ptr< HttpServer::Response > response, std::shared_ptr< HttpServer::Request > request)
Received a config change request, construct a reply and return to caller.
Definition: management_api.cpp:194
void configChildDelete(std::shared_ptr< HttpServer::Response > response, std::shared_ptr< HttpServer::Request > request)
Received a children deletion request, construct a reply and return to caller.
Definition: management_api.cpp:224
void configChildCreate(std::shared_ptr< HttpServer::Response > response, std::shared_ptr< HttpServer::Request > request)
Received a children creation request, construct a reply and return to caller.
Definition: management_api.cpp:254
~ManagementApi()
Management API destructor.
Definition: management_api.cpp:140
static ManagementApi * getInstance()
Return the signleton instance of the management interface.
Definition: management_api.cpp:132
void ping(std::shared_ptr< HttpServer::Response > response, std::shared_ptr< HttpServer::Request > request)
Received a ping request, construct a reply and return to caller.
Definition: management_api.cpp:157
ManagementApi(const std::string &name, const unsigned short port)
Construct a microservices management API manager class.
Definition: management_api.cpp:80