blob: c5420437963cea118ec5bb9ec603715b57c7d5ad (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
/**
* \file CMessageBroker.hpp
* \brief CMessageBroker singletone class header.
* \author AKara
*/
#ifndef CMESSAGEBROKER_H
#define CMESSAGEBROKER_H
#include <string>
#include "CSender.hpp"
/**
* \namespace NsMessageBroker
* \brief MessageBroker related functions.
*/
namespace NsMessageBroker
{
/**
* \enum ErrorCode
* \brief MessageBroker error codes.
* \note Value from -32099 to -32000 are reserved for implementation-defined server-errors.
*/
enum ErrorCode
{
CONTROLLER_EXISTS = -32000, /**< Controller has been already registered. */
SUBSCRIBTION_EXISTS = -32001, /**< Property has been already subscribed by this controller. */
PARSING_ERROR = -32700, /**< Invalid JSON. An error occurred on the server while parsing the JSON text. */
INVALID_REQUEST = -32600, /**< The received JSON not a valid MessageBroker Request. */
METHOD_NOT_FOUND = -32601, /**< The requested remote-procedure does not exist / is not available. */
INVALID_PARAMS = -32602, /**< Invalid method parameters. */
INTERNAL_ERROR = -32603, /**< Internal MessageBroker error. */
UNSUPPORTED_RESOURCE = 2 /**< Controller doesn't registered. */
};
/**
* \brief Forward declaration of the private class.
*/
class CMessageBroker_Private;
/**
* \class CMessageBroker
* \brief Singletone CMessageBroker class implementation.
*/
class CMessageBroker
{
public:
/**
* \brief Singletone instantiator.
* \return pointer to CMessageBroker instance.
*/
static CMessageBroker* getInstance();
/**
* \brief Destructor.
*/
~CMessageBroker();
/**
* \brief Receive data from TCP server (from client).
* \param fd FileDescriptor of socket.
* \param aJSONData JSON string.
* \param tryHard give up on first JSON parse error or try to workaround it.
*/
void onMessageReceived(int fd, std::string& aJSONData, bool tryHard);
/**
* \brief Test of buffer parsing.
*/
void Test();
/**
* @brief OnSocketClosed should be called if socked is closed by HMI
* @param fd socket descriptor
*/
void OnSocketClosed(const int fd);
/**
* \brief Starts MessageBroker.
*/
void startMessageBroker(CSender* pSender);
/**
* \brief Stops MessageBroker.
*/
void stopMessageBroker();
/**
* \brief Method for thread with que processing.
*/
void* MethodForThread(void * arg);
private:
/**
* \brief Private constructor.
*/
CMessageBroker();
/**
* \brief The PIMPL of the class.
*/
CMessageBroker_Private *p;
};
} /* namespace NsMessageBroker */
#endif // CMESSAGEBROKER_H
|