Fledge
An open source edge computing platform for industrial users
south_api.h
1 #ifndef _SOUTH_API_H
2 #define _SOUTH_API_H
3 /*
4  * Fledge storage service.
5  *
6  * Copyright (c) 2021 Dianomic Systems
7  *
8  * Released under the Apache 2.0 Licence
9  *
10  * Author: Mark Riddoch, Massimiliano Pinto
11  */
12 #include <logger.h>
13 #include <server_http.hpp>
14 
15 #define SETPOINT "^/fledge/south/setpoint$"
16 #define OPERATION "^/fledge/south/operation$"
17 
18 // Debugger URLs
19 #define DEBUG_ATTACH "^/fledge/south/debug/attach$"
20 #define DEBUG_DETACH "^/fledge/south/debug/detach$"
21 #define DEBUG_BUFFER "^/fledge/south/debug/buffer$"
22 #define DEBUG_ISOLATE "^/fledge/south/debug/isolate$"
23 #define DEBUG_SUSPEND "^/fledge/south/debug/suspend$"
24 #define DEBUG_STEP "^/fledge/south/debug/step$"
25 #define DEBUG_REPLAY "^/fledge/south/debug/replay$"
26 #define DEBUG_STATE "^/fledge/south/debug/state$"
27 
28 class SouthService;
29 
30 typedef std::shared_ptr<SimpleWeb::Server<SimpleWeb::HTTP>::Response> Response;
31 typedef std::shared_ptr<SimpleWeb::Server<SimpleWeb::HTTP>::Request> Request;
32 
33 class SouthApi {
34  public:
36  ~SouthApi();
37  unsigned short getListenerPort();
38  void setPoint(std::shared_ptr<SimpleWeb::Server<SimpleWeb::HTTP>::Response> response,
39  std::shared_ptr<SimpleWeb::Server<SimpleWeb::HTTP>::Request> request);
40  void operation(std::shared_ptr<SimpleWeb::Server<SimpleWeb::HTTP>::Response> response,
41  std::shared_ptr<SimpleWeb::Server<SimpleWeb::HTTP>::Request> request);
42  void startServer();
43 
44  // Debugger entry points
45  void attachDebugger(Response response, Request request);
46  void detachDebugger(Response response, Request request);
47  void setDebuggerBuffer(Response response, Request request);
48  void getDebuggerBuffer(Response response, Request request);
49  void isolateDebugger(Response response, Request request);
50  void suspendDebugger(Response response, Request request);
51  void stepDebugger(Response response, Request request);
52  void replayDebugger(Response response, Request request);
53  void stateDebugger(Response response, Request request);
54 
55  private:
56  SimpleWeb::Server<SimpleWeb::HTTP>
57  *m_server;
58  SouthService *m_service;
59  std::thread *m_thread;
60  Logger *m_logger;
61 };
62 
63 #endif
SouthApi::attachDebugger
void attachDebugger(Response response, Request request)
Invoke debugger attach on the south plugin.
Definition: south_api.cpp:404
SouthApi::~SouthApi
~SouthApi()
Destroy the API.
Definition: south_api.cpp:203
SouthApi::stepDebugger
void stepDebugger(Response response, Request request)
Invoke set debugger step command on the south plugin.
Definition: south_api.cpp:684
SouthApi::setDebuggerBuffer
void setDebuggerBuffer(Response response, Request request)
Invoke set debugger buffer size on the south plugin.
Definition: south_api.cpp:464
SouthApi::startServer
void startServer()
Called on the API service thread.
Definition: south_api.cpp:218
SouthApi::isolateDebugger
void isolateDebugger(Response response, Request request)
Invoke isolate debugger handler on the south plugin.
Definition: south_api.cpp:550
SouthApi::getDebuggerBuffer
void getDebuggerBuffer(Response response, Request request)
Invoke get debugger buffer size on the south plugin.
Definition: south_api.cpp:522
SouthService
The SouthService class.
Definition: south_service.h:57
SouthApi::suspendDebugger
void suspendDebugger(Response response, Request request)
Invoke suspend debugger handler on the south plugin.
Definition: south_api.cpp:617
SouthApi::operation
void operation(std::shared_ptr< SimpleWeb::Server< SimpleWeb::HTTP >::Response > response, std::shared_ptr< SimpleWeb::Server< SimpleWeb::HTTP >::Request > request)
Invoke an operation on the south plugin.
Definition: south_api.cpp:315
SouthApi::SouthApi
SouthApi(SouthService *)
South API class constructor.
Definition: south_api.cpp:166
SouthApi::stateDebugger
void stateDebugger(Response response, Request request)
Invoke debugger state on the south plugin.
Definition: south_api.cpp:772
SouthApi::detachDebugger
void detachDebugger(Response response, Request request)
Invoke debugger detach on the south plugin.
Definition: south_api.cpp:434
Logger
Fledge Logger class used to log to syslog.
Definition: logger.h:42
SouthApi::setPoint
void setPoint(std::shared_ptr< SimpleWeb::Server< SimpleWeb::HTTP >::Response > response, std::shared_ptr< SimpleWeb::Server< SimpleWeb::HTTP >::Request > request)
Implement the setPoint PUT request.
Definition: south_api.cpp:242
SouthApi::getListenerPort
unsigned short getListenerPort()
Return the port the service is listening on.
Definition: south_api.cpp:226
SouthApi::replayDebugger
void replayDebugger(Response response, Request request)
Invoke debugger replay on the south plugin.
Definition: south_api.cpp:742
SouthApi
Definition: south_api.h:33