summaryrefslogtreecommitdiff
path: root/src/3rd_party-static/message_broker/src/example
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rd_party-static/message_broker/src/example')
-rw-r--r--src/3rd_party-static/message_broker/src/example/MessageBrokerControllerAVA.cpp59
-rw-r--r--src/3rd_party-static/message_broker/src/example/MessageBrokerControllerAVA.hpp68
-rw-r--r--src/3rd_party-static/message_broker/src/example/MessageBrokerControllerBackend.cpp125
-rw-r--r--src/3rd_party-static/message_broker/src/example/MessageBrokerControllerBackend.hpp96
-rw-r--r--src/3rd_party-static/message_broker/src/example/MessageBrokerControllerPhone.cpp191
-rw-r--r--src/3rd_party-static/message_broker/src/example/MessageBrokerControllerPhone.hpp117
-rw-r--r--src/3rd_party-static/message_broker/src/example/MessageBrokerServer.cpp245
-rw-r--r--src/3rd_party-static/message_broker/src/example/MessageBrokerServer.hpp19
8 files changed, 920 insertions, 0 deletions
diff --git a/src/3rd_party-static/message_broker/src/example/MessageBrokerControllerAVA.cpp b/src/3rd_party-static/message_broker/src/example/MessageBrokerControllerAVA.cpp
new file mode 100644
index 0000000000..77ab1ca2c1
--- /dev/null
+++ b/src/3rd_party-static/message_broker/src/example/MessageBrokerControllerAVA.cpp
@@ -0,0 +1,59 @@
+/**
+ * \file MessageBrokerControllerAVA.cpp
+ * \brief MessageBroker Controller for Avatar.
+ * \author AKara
+ */
+
+#include <ctime>
+
+#include "MessageBrokerControllerAVA.hpp"
+
+#include "MBDebugHelper.h"
+
+extern int start;
+
+namespace NsMessageBroker
+{
+ CMessageBrokerControllerAVA::CMessageBrokerControllerAVA(const std::string& address, uint16_t port):
+ CMessageBrokerController(address, port, "AVA")
+ {
+ }
+
+ CMessageBrokerControllerAVA::~CMessageBrokerControllerAVA()
+ {
+ }
+
+ void CMessageBrokerControllerAVA::processRequest(Json::Value& root)
+ {
+ DBG_MSG(("CMessageBrokerControllerAVA::processRequest()\n"));
+ root=root;//to prevent compiler warning
+ }
+
+ void CMessageBrokerControllerAVA::processNotification(Json::Value& root)
+ {
+ DBG_MSG(("CMessageBrokerControllerAVA::processNotification()\n"));
+ root=root;//to prevent compiler warning
+ }
+
+ void CMessageBrokerControllerAVA::processResponse(std::string method, Json::Value& root)
+ {
+ DBG_MSG(("CMessageBrokerControllerAVA::processResponse()\n"));
+ DWORD stop = GetTickCount();
+ int diff = stop - start;
+ std::string id = root["id"].asString();
+ printf("Execution time for id %s is %d ms!\n", id.c_str(), diff);
+ root=root;//to prevent compiler warning
+ method=method;//to prevent compiler warning
+ }
+
+ void CMessageBrokerControllerAVA::makeCall(std::string phoneNumber)
+ {
+ DBG_MSG(("CMessageBrokerControllerAVA::makeCall()\n"));
+ Json::Value request, params;
+ prepareMessage(request);
+ request["method"] = "Phone.makeCall";
+ params["phoneNumber"] = phoneNumber;
+ request["params"] = params;
+ sendJsonMessage(request);
+ }
+} /* namespace NsMessageBroker */
diff --git a/src/3rd_party-static/message_broker/src/example/MessageBrokerControllerAVA.hpp b/src/3rd_party-static/message_broker/src/example/MessageBrokerControllerAVA.hpp
new file mode 100644
index 0000000000..47e684a7e4
--- /dev/null
+++ b/src/3rd_party-static/message_broker/src/example/MessageBrokerControllerAVA.hpp
@@ -0,0 +1,68 @@
+/**
+ * \file MessageBrokerControllerAVA.hpp
+ * \brief MessageBroker Controller AVA.
+ * \author AKara
+ */
+
+#ifndef MB_CONTROLLERAVA_H
+#define MB_CONTROLLERAVA_H
+
+#include <iostream>
+
+#include "json/json.h"
+
+#include "mb_controller.hpp"
+
+/**
+ * \namespace NsMessageBroker
+ * \brief MessageBroker related functions.
+ */
+namespace NsMessageBroker
+{
+ /**
+ * \class CMessageBrokerControllerAVA
+ * \brief MessageBroker Controller.
+ */
+ class CMessageBrokerControllerAVA : public CMessageBrokerController
+ {
+ public:
+ /**
+ * \brief Constructor.
+ * \param address remote network address or FQDN
+ * \param port remote local port
+ */
+ CMessageBrokerControllerAVA(const std::string& address, uint16_t port);
+
+ /**
+ * \brief Destructor.
+ */
+ ~CMessageBrokerControllerAVA();
+
+ /**
+ * \brief process request.
+ * \param root JSON message.
+ */
+ void processRequest(Json::Value& root);
+
+ /**
+ * \brief process notification.
+ * \param root JSON message.
+ */
+ void processNotification(Json::Value& root);
+
+ /**
+ * \brief process response.
+ * \param method method name which has been called.
+ * \param root JSON message.
+ */
+ void processResponse(std::string method, Json::Value& root);
+
+ /**
+ * \brief sends message to the phone to make call.
+ * \param phoneNumber number for call.
+ */
+ void makeCall(std::string phoneNumber);
+
+ };
+}/* namespace NsMessageBroker */
+#endif /* MB_CONTROLLERAVA_H */ \ No newline at end of file
diff --git a/src/3rd_party-static/message_broker/src/example/MessageBrokerControllerBackend.cpp b/src/3rd_party-static/message_broker/src/example/MessageBrokerControllerBackend.cpp
new file mode 100644
index 0000000000..cbbe39492b
--- /dev/null
+++ b/src/3rd_party-static/message_broker/src/example/MessageBrokerControllerBackend.cpp
@@ -0,0 +1,125 @@
+/**
+ * \file MessageBrokerControllerBackend.cpp
+ * \brief MessageBroker Controller for Backend.
+ * \author AKara
+ */
+
+#include "MessageBrokerControllerBackend.hpp"
+
+#include "MBDebugHelper.h"
+
+namespace NsMessageBroker
+{
+ CMessageBrokerControllerBackend::CMessageBrokerControllerBackend(const std::string& address, unsigned short port):
+CMessageBrokerController(address, port, std::string("Backend"))
+ {
+ }
+
+ CMessageBrokerControllerBackend::~CMessageBrokerControllerBackend()
+ {
+ }
+
+ void CMessageBrokerControllerBackend::processRequest(Json::Value& root)
+ {
+ DBG_MSG(("CMessageBrokerControllerBackend::processRequest()\n"));
+ if (getControllersName() == getDestinationComponentName(root))
+ {
+ Json::Value response;
+ response["jsonrpc"] = root["jsonrpc"];
+ response["id"] = root["id"];
+ if ("isFirstStart" == getMethodName(root))
+ {
+ isFirstStart(response);
+ } else if ("isFullScreen" == getMethodName(root))
+ {
+ isFullScreen(response);
+ } else if ("getWindowSize" == getMethodName(root))
+ {
+ getWindowSize(response);
+ } else if ("getWindowDensity" == getMethodName(root))
+ {
+ getWindowDensity(response);
+ } else if ("getOSInfo" == getMethodName(root))
+ {
+ getOSInfo(response);
+ } else if ("logToOS" == getMethodName(root))
+ {
+ logToOS(response);
+ } else
+ {
+ DBG_MSG_ERROR(("Method has not been found!\n"));
+ Json::Value err;
+ err["code"] = NsMessageBroker::INVALID_REQUEST;
+ err["message"] = "Method has not been found.";
+ response["error"] = err;
+ }
+ sendJsonMessage(response);
+ } else
+ {
+ DBG_MSG_ERROR(("Wrong message destination!\n"));
+ }
+ }
+
+ void CMessageBrokerControllerBackend::processNotification(Json::Value& root)
+ {
+ DBG_MSG(("CMessageBrokerControllerBackend::processNotification()\n"));
+ root=root;//to prevent compiler warning
+ }
+
+ void CMessageBrokerControllerBackend::processResponse(std::string method, Json::Value& root)
+ {
+ DBG_MSG(("CMessageBrokerControllerBackend::processResponse()\n"));
+ root=root;//to prevent compiler warning
+ method=method;//to prevent compiler warning
+ }
+
+ void CMessageBrokerControllerBackend::isFirstStart(Json::Value& response)
+ {
+ DBG_MSG(("CMessageBrokerControllerBackend::isFirstStart()\n"));
+ Json::Value res;
+ res["isFirstStart"] = false;
+ response["result"] = res;
+ }
+
+ void CMessageBrokerControllerBackend::isFullScreen(Json::Value& response)
+ {
+ DBG_MSG(("CMessageBrokerControllerBackend::isFullScreen()\n"));
+ Json::Value res;
+ res["isFullScreen"] = false;
+ response["result"] = res;
+ }
+
+ void CMessageBrokerControllerBackend::getWindowSize(Json::Value& response)
+ {
+ DBG_MSG(("CMessageBrokerControllerBackend::getWindowSize()\n"));
+ Json::Value res;
+ res["width"] = 800;
+ res["height"] = 480;
+ response["result"] = res;
+ }
+
+ void CMessageBrokerControllerBackend::getWindowDensity(Json::Value& response)
+ {
+ DBG_MSG(("CMessageBrokerControllerBackend::getWindowDensity()\n"));
+ Json::Value res;
+ res["windowDensity"] = 1;
+ response["result"] = res;
+ }
+
+ void CMessageBrokerControllerBackend::getOSInfo(Json::Value& response)
+ {
+ DBG_MSG(("CMessageBrokerControllerBackend::getOSInfo()\n"));
+ Json::Value res;
+ res["osType"] = "";
+ res["osVersion"] = "";
+ res["isNativeApplication"] = true;
+ response["result"] = res;
+ }
+
+ void CMessageBrokerControllerBackend::logToOS(Json::Value& response)
+ {
+ DBG_MSG(("CMessageBrokerControllerBackend::logToOS()\n"));
+ response["result"] = "";
+ }
+
+} /* namespace NsMessageBroker */
diff --git a/src/3rd_party-static/message_broker/src/example/MessageBrokerControllerBackend.hpp b/src/3rd_party-static/message_broker/src/example/MessageBrokerControllerBackend.hpp
new file mode 100644
index 0000000000..b79411dc98
--- /dev/null
+++ b/src/3rd_party-static/message_broker/src/example/MessageBrokerControllerBackend.hpp
@@ -0,0 +1,96 @@
+/**
+ * \file MessageBrokerControllerBackend.hpp
+ * \brief MessageBroker Controller Backend.
+ * \author AKara
+ */
+#pragma once
+
+#include <iostream>
+
+#include "json/json.h"
+
+#include "mb_controller.hpp"
+#include "CMessageBroker.hpp"
+
+/**
+ * \namespace NsMessageBroker
+ * \brief MessageBroker related functions.
+ */
+namespace NsMessageBroker
+{
+ /**
+ * \class CMessageBrokerControllerBackend
+ * \brief MessageBroker Controller.
+ */
+
+ class CMessageBrokerControllerBackend : public CMessageBrokerController
+ {
+ public:
+ /**
+ * \brief Constructor.
+ * \param address remote network address or FQDN
+ * \param port remote local port
+ */
+ CMessageBrokerControllerBackend(const std::string& address, unsigned short port);
+
+ /**
+ * \brief Destructor.
+ */
+ ~CMessageBrokerControllerBackend();
+
+ /**
+ * \brief process request.
+ * \param root JSON message.
+ */
+ void processRequest(Json::Value& root);
+
+ /**
+ * \brief process notification.
+ * \param root JSON message.
+ */
+ void processNotification(Json::Value& root);
+
+ /**
+ * \brief process response.
+ * \param method method name which has been called.
+ * \param root JSON message.
+ */
+ void processResponse(std::string method, Json::Value& root);
+ private:
+ /**
+ * \brief Checks first start.
+ * \param response container for response
+ */
+ void isFirstStart(Json::Value& response);
+
+ /**
+ * \brief Checks first start.
+ * \param response container for response
+ */
+ void isFullScreen(Json::Value& response);
+
+ /**
+ * \brief Checks first start.
+ * \param response container for response
+ */
+ void getWindowSize(Json::Value& response);
+
+ /**
+ * \brief Checks first start.
+ * \param response container for response
+ */
+ void getWindowDensity(Json::Value& response);
+
+ /**
+ * \brief Checks first start.
+ * \param response container for response
+ */
+ void getOSInfo(Json::Value& response);
+
+ /**
+ * \brief Checks first start.
+ * \param response container for response
+ */
+ void logToOS(Json::Value& response);
+ };
+}/* namespace NsMessageBroker */
diff --git a/src/3rd_party-static/message_broker/src/example/MessageBrokerControllerPhone.cpp b/src/3rd_party-static/message_broker/src/example/MessageBrokerControllerPhone.cpp
new file mode 100644
index 0000000000..6f308e71c2
--- /dev/null
+++ b/src/3rd_party-static/message_broker/src/example/MessageBrokerControllerPhone.cpp
@@ -0,0 +1,191 @@
+/**
+ * \file MessageBrokerControllerPhone.cpp
+ * \brief MessageBroker Controller for Phone.
+ * \author AKara
+ */
+
+#include "MessageBrokerControllerPhone.hpp"
+
+#include "CMessageBroker.hpp"
+
+#include "MBDebugHelper.h"
+
+namespace NsMessageBroker
+{
+ CMessageBrokerControllerPhone::CMessageBrokerControllerPhone(const std::string& address, uint16_t port):
+ CMessageBrokerController(address, port, "Phone")
+ {
+ }
+
+ CMessageBrokerControllerPhone::~CMessageBrokerControllerPhone()
+ {
+ }
+
+ void CMessageBrokerControllerPhone::processRequest(Json::Value& root)
+ {
+ DBG_MSG(("CMessageBrokerControllerPhone::processRequest()\n"));
+ if (getControllersName() == getDestinationComponentName(root))
+ {
+ Json::Value response;
+ response["jsonrpc"] = root["jsonrpc"];
+ response["id"] = root["id"];
+ if ("makeCall" == getMethodName(root))
+ {
+ if (root.isMember("params"))
+ {
+ Json::Value params = root["params"];
+ if (params.isMember("phoneNumber") && params["phoneNumber"].isString())
+ {
+ makeCall(params["phoneNumber"].asString(), response);
+ } else
+ {
+ DBG_MSG_ERROR(("Wrong params!\n"));
+ prepareErrorMessage(NsMessageBroker::INVALID_PARAMS, "Wrong params!", response);
+ }
+ } else
+ {
+ DBG_MSG_ERROR(("Not possible to parse phone number!\n"));
+ prepareErrorMessage(NsMessageBroker::INVALID_PARAMS, "Not possible to parse phone number!", response);
+ }
+ } else if ("endCall" == getMethodName(root))
+ {
+ endCall(root["params"].asString(), response);
+ } else if ("holdCall" == getMethodName(root))
+ {
+ holdCall(root["params"].asString(), response);
+ } else if ("getContacts" == getMethodName(root))
+ {
+ if (root.isMember("params"))
+ {
+ Json::Value params = root["params"];
+ if (params.isMember("firstLetter") && params["firstLetter"].isString()
+ && params.isMember("offset") && params["offset"].isInt()
+ && params.isMember("numberOfItems") && params["numberOfItems"].isInt())
+ {
+ getContacts(params["firstLetter"].asString(), params["offset"].asInt(), params["numberOfItems"].asInt(), response);
+ } else
+ {
+ DBG_MSG_ERROR(("Wrong params of getContacts()!\n"));
+ prepareErrorMessage(NsMessageBroker::INVALID_PARAMS, "Wrong params of getContacts()!", response);
+ }
+ } else
+ {
+ DBG_MSG_ERROR(("Params is not an object!\n"));
+ prepareErrorMessage(NsMessageBroker::INVALID_PARAMS, "Params is not an object!", response);
+ }
+ } else if ("getHistory" == getMethodName(root))
+ {
+ if (root.isMember("params"))
+ {
+ Json::Value params = root["params"];
+ if (params.isMember("typeOfContacts") && params["typeOfContacts"].isString()
+ && params.isMember("offset") && params["offset"].isInt()
+ && params.isMember("numberOfItems") && params["numberOfItems"].isInt())
+ {
+ getHistory(params["typeOfContacts"].asString(), params["offset"].asInt(), params["numberOfItems"].asInt(), response);
+ } else
+ {
+ DBG_MSG_ERROR(("Wrong params of getHistory()!\n"));
+ prepareErrorMessage(NsMessageBroker::INVALID_PARAMS, "Wrong params of getHistory()!", response);
+ }
+ } else
+ {
+ DBG_MSG_ERROR(("Params is not an object!\n"));
+ prepareErrorMessage(NsMessageBroker::INVALID_PARAMS, "Params is not an object!", response);
+ }
+ } else
+ {
+ DBG_MSG_ERROR(("Method has not been found!\n"));
+ Json::Value err;
+ err["code"] = NsMessageBroker::INVALID_REQUEST;
+ err["message"] = "Method has not been found.";
+ response["error"] = err;
+ }
+ sendJsonMessage(response);
+ } else
+ {
+ DBG_MSG_ERROR(("Wrong message destination!\n"));
+ }
+ }
+
+ void CMessageBrokerControllerPhone::makeCall(std::string phoneNumber, Json::Value& response)
+ {
+ DBG_MSG(("CMessageBrokerControllerPhone::makeCall()\n"));
+ phoneNumber = phoneNumber; // to avoid compiler's warning
+ response["result"] = "OK";
+ }
+
+ void CMessageBrokerControllerPhone::endCall(std::string phoneNumber, Json::Value& response)
+ {
+ DBG_MSG(("CMessageBrokerControllerPhone::endCall()\n"));
+ phoneNumber = phoneNumber; // to avoid compiler's warning
+ response["result"] = "OK";
+ }
+
+ void CMessageBrokerControllerPhone::holdCall(std::string phoneNumber, Json::Value& response)
+ {
+ DBG_MSG(("CMessageBrokerControllerPhone::holdCall()\n"));
+ phoneNumber = phoneNumber; // to avoid compiler's warning
+ response["result"] = "OK";
+ }
+
+ void CMessageBrokerControllerPhone::getContacts(std::string firstLetter, int offset, int numberOfItems, Json::Value& response)
+ {
+ DBG_MSG(("CMessageBrokerControllerPhone::getContacts()\n"));
+ firstLetter = firstLetter; // to avoid compiler's warning
+ offset = offset; // to avoid compiler's warning
+ numberOfItems = numberOfItems; // to avoid compiler's warning
+ response["result"] = "OK";
+ }
+
+ void CMessageBrokerControllerPhone::getHistory(std::string firstLetter, int offset, int numberOfItems, Json::Value& response)
+ {
+ DBG_MSG(("CMessageBrokerControllerPhone::getHistory()\n"));
+ firstLetter = firstLetter; // to avoid compiler's warning
+ offset = offset; // to avoid compiler's warning
+ numberOfItems = numberOfItems; // to avoid compiler's warning
+ response["result"] = "OK";
+ }
+
+ void CMessageBrokerControllerPhone::onCallStatusChanged(int callStatus)
+ {
+ DBG_MSG(("CMessageBrokerControllerPhone::onCallStatusChanged()\n"));
+ Json::Value request, params;
+ request["jsonrpc"] = "2.0";
+ request["method"] = "Phone.onCallStatusChanged";
+ params["callStatus"] = callStatus;
+ request["params"] = params;
+ sendJsonMessage(request);
+ }
+
+ void CMessageBrokerControllerPhone::onContactsUpdated()
+ {
+ DBG_MSG(("CMessageBrokerControllerPhone::onContactsUpdated()\n"));
+ Json::Value request;
+ request["jsonrpc"] = "2.0";
+ request["method"] = "Phone.onContactsUpdated";
+ sendJsonMessage(request);
+ }
+
+ void CMessageBrokerControllerPhone::onHistoryUpdated()
+ {
+ DBG_MSG(("CMessageBrokerControllerPhone::onHistoryUpdated()\n"));
+ Json::Value request;
+ request["jsonrpc"] = "2.0";
+ request["method"] = "Phone.onHistoryUpdated";
+ sendJsonMessage(request);
+ }
+
+ void CMessageBrokerControllerPhone::processNotification(Json::Value& root)
+ {
+ DBG_MSG(("CMessageBrokerControllerPhone::processNotification()\n"));
+ root=root;//to prevent compiler warning
+ }
+
+ void CMessageBrokerControllerPhone::processResponse(std::string method, Json::Value& root)
+ {
+ DBG_MSG(("CMessageBrokerControllerPhone::processResponse()\n"));
+ root=root;//to prevent compiler warning
+ method = method;
+ }
+} /* namespace NsMessageBroker */
diff --git a/src/3rd_party-static/message_broker/src/example/MessageBrokerControllerPhone.hpp b/src/3rd_party-static/message_broker/src/example/MessageBrokerControllerPhone.hpp
new file mode 100644
index 0000000000..e6f4898226
--- /dev/null
+++ b/src/3rd_party-static/message_broker/src/example/MessageBrokerControllerPhone.hpp
@@ -0,0 +1,117 @@
+/**
+ * \file MessageBrokerControllerPhone.hpp
+ * \brief MessageBroker Controller Phone.
+ * \author AKara
+ */
+
+#ifndef MB_CONTROLLERPHONE_H
+#define MB_CONTROLLERPHONE_H
+
+#include <iostream>
+
+#include "json/json.h"
+
+#include "mb_controller.hpp"
+
+/**
+ * \namespace NsMessageBroker
+ * \brief MessageBroker related functions.
+ */
+namespace NsMessageBroker
+{
+ /**
+ * \class CMessageBrokerControllerPhone
+ * \brief MessageBroker Controller Phone.
+ */
+ class CMessageBrokerControllerPhone : public CMessageBrokerController
+ {
+ public:
+ /**
+ * \brief Constructor.
+ * \param address remote network address or FQDN
+ * \param port remote local port
+ */
+ CMessageBrokerControllerPhone(const std::string& address, uint16_t port);
+
+ /**
+ * \brief Destructor.
+ */
+ ~CMessageBrokerControllerPhone();
+
+ /**
+ * \brief process request.
+ * \param root JSON message.
+ */
+ void processRequest(Json::Value& root);
+
+ /**
+ * \brief process notification.
+ * \param root JSON message.
+ */
+ void processNotification(Json::Value& root);
+
+ /**
+ * \brief process response.
+ * \param method method name which has been called.
+ * \param root JSON message.
+ */
+ void processResponse(std::string method, Json::Value& root);
+ public://Notifications
+ /**
+ * \brief Notifies Call Status changing.
+ * \param callStatus status of current active call
+ */
+ void onCallStatusChanged(int callStatus);
+
+ /**
+ * \brief Notifies Contacts list updated.
+ */
+ void onContactsUpdated();
+
+ /**
+ * \brief Notifies History list updated.
+ */
+ void onHistoryUpdated();
+ private:
+ /**
+ * \brief Makes call.
+ * \param phoneNumber number for call.
+ * \param response container for response
+ */
+ void makeCall(std::string phoneNumber, Json::Value& response);
+
+ /**
+ * \brief Ends call.
+ * \param phoneNumber number of call.
+ * \param response container for response
+ */
+ void endCall(std::string phoneNumber, Json::Value& response);
+
+ /**
+ * \brief Holds call.
+ * \param phoneNumber number of call.
+ * \param response container for response
+ */
+ void holdCall(std::string phoneNumber, Json::Value& response);
+
+ /**
+ * \brief Gets contacts.
+ * \param firstLetter first letter of list.
+ * \param offset offset from first item
+ * \param numberOfItems number of expected items
+ * \param response container for response
+ */
+ void getContacts(std::string firstLetter, int offset, int numberOfItems, Json::Value& response);
+
+ /**
+ * \brief Gets history.
+ * \param typeOfContacts type of contacts (incoming/outgoing/missed/all calls).
+ * \param offset offset from first item
+ * \param numberOfItems number of expected items
+ * \param response container for response
+ */
+ void getHistory(std::string typeOfContacts, int offset, int numberOfItems, Json::Value& response);
+
+ };
+}/* namespace NsMessageBroker */
+#endif /* MB_CONTROLLERPHONE_H */ \ No newline at end of file
diff --git a/src/3rd_party-static/message_broker/src/example/MessageBrokerServer.cpp b/src/3rd_party-static/message_broker/src/example/MessageBrokerServer.cpp
new file mode 100644
index 0000000000..405b3fcbd5
--- /dev/null
+++ b/src/3rd_party-static/message_broker/src/example/MessageBrokerServer.cpp
@@ -0,0 +1,245 @@
+/**
+ * \file MessageBrokerServer.cpp
+ * \brief MessageBrokerServer sources
+ * \author AKara
+ */
+
+#include <cstdio>
+#include <cstdlib>
+#include <csignal>
+#include <iostream>
+#include <ctime>
+
+#include "system.h"
+
+#include "MBDebugHelper.h"
+
+#include "mb_tcpserver.hpp"
+#include "mb_tcpclient.hpp"
+#include "CMessageBroker.hpp"
+
+#include "MessageBrokerControllerAVA.hpp"
+#include "MessageBrokerControllerPhone.hpp"
+#include "MessageBrokerControllerBackend.hpp"
+
+/**
+ * \brief Signal management.
+ * \param code signal code
+ */
+ static void signal_handler(int code)
+ {
+ switch(code)
+ {
+ case SIGINT:
+ case SIGTERM:
+ break;
+ default:
+ break;
+ }
+}
+
+/**
+ * \brief stores start time of test operation.
+ */
+int start;
+
+/**
+ * \brief Entry point of the program.
+ * \param argc number of argument
+ * \param argv array of arguments
+ * \return EXIT_SUCCESS or EXIT_FAILURE
+ */
+int main(int argc, char** argv)
+{
+ NsMessageBroker::CMessageBroker* mpMessageBroker = NsMessageBroker::CMessageBroker::getInstance();
+ if (!mpMessageBroker)
+ {
+ DBG_MSG_ERROR(("NULL pointer\n"));
+ exit(EXIT_FAILURE);
+ }
+
+
+ NsMessageBroker::TcpServer server(std::string("127.0.0.1"), 8086, mpMessageBroker);
+
+ DBG_MSG(("Start MessageBroker component\n"));
+ mpMessageBroker->startMessageBroker(&server);
+
+ NsMessageBroker::CMessageBrokerControllerAVA tcpControllerAVA(std::string("127.0.0.1"), 8086);
+ NsMessageBroker::CMessageBrokerControllerPhone tcpControllerPhone(std::string("127.0.0.1"), 8086);
+ NsMessageBroker::CMessageBrokerControllerBackend tcpControllerBackend(std::string("127.0.0.1"), 8086);
+
+ /* avoid compilation warnings */
+ argc = argc;
+ argv = argv;
+
+ if(!networking::init())
+ {
+ DBG_MSG_ERROR(("Networking initialization failed!\n"));
+
+ }
+
+ if(signal(SIGTERM, signal_handler) == SIG_ERR)
+ {
+ DBG_MSG_ERROR(("Error signal SIGTERM will not be handled!\n"));
+ }
+
+ if(signal(SIGINT, signal_handler) == SIG_ERR)
+ {
+ DBG_MSG_ERROR(("Error signal SIGINT will not be handled!\n"));
+ }
+
+ if(!server.Bind())
+ {
+ DBG_MSG_ERROR(("Bind failed!\n"));
+ exit(EXIT_FAILURE);
+ } else
+ {
+ DBG_MSG(("Bind successful!\n"));
+ }
+
+ if(!server.Listen())
+ {
+ DBG_MSG_ERROR(("Listen failed!\n"));
+ exit(EXIT_FAILURE);
+ } else
+ {
+ DBG_MSG(("Listen successful!\n"));
+ }
+
+ if(!tcpControllerAVA.Connect())
+ {
+ DBG_MSG_ERROR(("Cannot connect to remote peer!\n"));
+ exit(EXIT_FAILURE);
+ } else
+ {
+ DBG_MSG(("ClientAVA connected to the server! SocketID = %d\n", tcpControllerAVA.GetSocket()));
+ }
+
+ if(!tcpControllerPhone.Connect())
+ {
+ DBG_MSG_ERROR(("Cannot connect to remote peer!\n"));
+ exit(EXIT_FAILURE);
+ } else
+ {
+ DBG_MSG(("ClientPhone connected to the server! SocketID = %d\n",tcpControllerPhone.GetSocket()));
+ }
+
+ if(!tcpControllerBackend.Connect())
+ {
+ DBG_MSG_ERROR(("Cannot connect to remote peer!\n"));
+ exit(EXIT_FAILURE);
+ } else
+ {
+ DBG_MSG(("ClientBackend connected to the server! SocketID = %d\n",tcpControllerBackend.GetSocket()));
+ }
+
+ DBG_MSG(("Start CMessageBroker thread!\n"));
+ System::Thread th1(new System::ThreadArgImpl<NsMessageBroker::CMessageBroker>(*mpMessageBroker, &NsMessageBroker::CMessageBroker::MethodForThread, NULL));
+ th1.Start(false);
+
+ DBG_MSG(("Start MessageBroker TCP server thread!\n"));
+ System::Thread th2(new System::ThreadArgImpl<NsMessageBroker::TcpServer>(server, &NsMessageBroker::TcpServer::MethodForThread, NULL));
+ th2.Start(false);
+
+ DBG_MSG(("Start tcpControllerAVA receiver thread!\n"));
+ System::Thread th3(new System::ThreadArgImpl<NsMessageBroker::CMessageBrokerControllerAVA>(tcpControllerAVA, &NsMessageBroker::CMessageBrokerControllerAVA::MethodForReceiverThread, NULL));
+ th3.Start(false);
+
+ DBG_MSG(("Start tcpControllerPhone receiver thread!\n"));
+ System::Thread th4(new System::ThreadArgImpl<NsMessageBroker::CMessageBrokerControllerPhone>(tcpControllerPhone, &NsMessageBroker::CMessageBrokerControllerPhone::MethodForReceiverThread, NULL));
+ th4.Start(false);
+
+ DBG_MSG(("Start tcpControllerBackend receiver thread!\n"));
+ System::Thread th5(new System::ThreadArgImpl<NsMessageBroker::CMessageBrokerControllerBackend>(tcpControllerBackend, &NsMessageBroker::CMessageBrokerControllerBackend::MethodForReceiverThread, NULL));
+ th5.Start(false);
+
+ bool loop = true;
+ while(loop)
+ {
+ DBG_MSG(("Enter command code:\n"));
+ int i;
+ std::cin >> i;
+ switch(i)
+ {
+ case 0:
+ {
+ DBG_MSG(("Exit!\n"));
+ mpMessageBroker->stopMessageBroker();
+ th1.Stop();
+ th2.Stop();
+ th3.Stop();
+ th4.Stop();
+ server.Close();
+ loop = false;
+ break;
+ }
+ case 1:// register component
+ {
+ DBG_MSG(("tcpControllerAVA.register()\n"));
+ tcpControllerAVA.registerController(0);
+ DBG_MSG(("tcpControllerPhone.register()\n"));
+ tcpControllerPhone.registerController(1);
+ DBG_MSG(("tcpControllerBackend.register()\n"));
+ tcpControllerBackend.registerController(2);
+ break;
+ }
+ case 2:// external message
+ {
+ DBG_MSG(("tcpControllerAVA.Phone.Call()\n"));
+ start = GetTickCount();
+ tcpControllerAVA.makeCall("+380677639550");
+ break;
+ }
+ case 3://subscribe
+ {
+ DBG_MSG(("tcpControllerAVA.subscribeTo()\n"));
+ tcpControllerAVA.subscribeTo("Phone.onContactsUpdated");
+ break;
+ }
+ case 4://notify
+ {
+ DBG_MSG(("tcpControllerPhone.onContactsUpdated()\n"));
+ tcpControllerPhone.onContactsUpdated();
+ break;
+ }
+ case 5: //unsubscribe
+ {
+ DBG_MSG(("tcpControllerAVA.unsubscribeFrom()\n"));
+ tcpControllerAVA.unsubscribeFrom("Phone.onContactsUpdated");
+ break;
+ }
+ case 6: //unregister
+ {
+ DBG_MSG(("tcpControllerPhone.unregister()\n"));
+ tcpControllerPhone.unregisterController();
+ break;
+ }
+ case 7: //stress test
+ {
+
+ DBG_MSG(("tcpControllerAVA.Phone.Call() 500 times\n"));
+ start = GetTickCount();
+ for (int c =0; c<1000; c++)
+ {
+ tcpControllerAVA.makeCall("+380677639550");
+ }
+ int stop = GetTickCount();
+ int diff = stop - start;
+ printf("Requests execution time is %d ms!\n", diff);
+ break;
+ }
+ case 8: //parser test
+ {
+ DBG_MSG(("Parser test\n"));
+ mpMessageBroker->Test();
+ break;
+ }
+ default:
+ {
+ DBG_MSG(("Entered: %d\n", i));
+ break;
+ }
+ }
+ }
+ return EXIT_SUCCESS;
+} \ No newline at end of file
diff --git a/src/3rd_party-static/message_broker/src/example/MessageBrokerServer.hpp b/src/3rd_party-static/message_broker/src/example/MessageBrokerServer.hpp
new file mode 100644
index 0000000000..884ed0309f
--- /dev/null
+++ b/src/3rd_party-static/message_broker/src/example/MessageBrokerServer.hpp
@@ -0,0 +1,19 @@
+/**
+ * \file MessageBrokerServer.hpp
+ * \brief MessageBrokerServer header
+ * \author AKara
+ */
+
+#ifndef MESSAGEBROKERSERVER_H
+#define MESSAGEBROKERSERVER_H
+
+/**
+ * \namespace NsMessageBroker
+ * \brief MessageBroker related functions.
+ */
+namespace NsMessageBroker
+{
+
+} /* namespace NsMessageBroker */
+
+#endif /* MESSAGEBROKERSERVER_H */