Commit daa339b0c2f2193b64fa15c6b1cb4b0e8024937a

Authored by Wiebe Cazemier
1 parent 54f45b27

random stuff

main.cpp
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 5
6 #include "mainapp.h" 6 #include "mainapp.h"
7 7
8 -static MainApp mainApp; 8 +MainApp *mainApp = MainApp::getMainApp();
9 9
10 static void signal_handler(int signal) 10 static void signal_handler(int signal)
11 { 11 {
@@ -19,7 +19,7 @@ static void signal_handler(int signal) @@ -19,7 +19,7 @@ static void signal_handler(int signal)
19 } 19 }
20 else if (signal == SIGTERM || signal == SIGINT) 20 else if (signal == SIGTERM || signal == SIGINT)
21 { 21 {
22 - mainApp.quit(); 22 + mainApp->quit();
23 } 23 }
24 else 24 else
25 { 25 {
@@ -59,7 +59,7 @@ int main() @@ -59,7 +59,7 @@ int main()
59 try 59 try
60 { 60 {
61 check<std::runtime_error>(register_signal_handers()); 61 check<std::runtime_error>(register_signal_handers());
62 - mainApp.start(); 62 + mainApp->start();
63 } 63 }
64 catch (std::exception &ex) 64 catch (std::exception &ex)
65 { 65 {
mainapp.cpp
@@ -4,6 +4,8 @@ @@ -4,6 +4,8 @@
4 #define MAX_EVENTS 1024 4 #define MAX_EVENTS 1024
5 #define NR_OF_THREADS 4 5 #define NR_OF_THREADS 4
6 6
  7 +MainApp *MainApp::instance = nullptr;
  8 +
7 void do_thread_work(ThreadData *threadData) 9 void do_thread_work(ThreadData *threadData)
8 { 10 {
9 int epoll_fd = threadData->epollfd; 11 int epoll_fd = threadData->epollfd;
@@ -86,6 +88,14 @@ MainApp::MainApp() : @@ -86,6 +88,14 @@ MainApp::MainApp() :
86 88
87 } 89 }
88 90
  91 +MainApp *MainApp::getMainApp()
  92 +{
  93 + if (instance == nullptr)
  94 + instance = new MainApp();
  95 +
  96 + return instance;
  97 +}
  98 +
89 void MainApp::start() 99 void MainApp::start()
90 { 100 {
91 int listen_fd = check<std::runtime_error>(socket(AF_INET, SOCK_STREAM, 0)); 101 int listen_fd = check<std::runtime_error>(socket(AF_INET, SOCK_STREAM, 0));
mainapp.h
@@ -17,15 +17,19 @@ @@ -17,15 +17,19 @@
17 #include "mqttpacket.h" 17 #include "mqttpacket.h"
18 #include "subscriptionstore.h" 18 #include "subscriptionstore.h"
19 19
20 -  
21 class MainApp 20 class MainApp
22 { 21 {
  22 + static MainApp *instance;
  23 +
23 bool running = true; 24 bool running = true;
24 std::vector<std::shared_ptr<ThreadData>> threads; 25 std::vector<std::shared_ptr<ThreadData>> threads;
25 std::shared_ptr<SubscriptionStore> subscriptionStore; 26 std::shared_ptr<SubscriptionStore> subscriptionStore;
26 27
27 -public:  
28 MainApp(); 28 MainApp();
  29 +public:
  30 + MainApp(const MainApp &rhs) = delete;
  31 + MainApp(MainApp &&rhs) = delete;
  32 + static MainApp *getMainApp();
29 void start(); 33 void start();
30 void quit(); 34 void quit();
31 }; 35 };
utils.cpp
1 #include "utils.h" 1 #include "utils.h"
2 2
3 3
  4 +
  5 +std::list<std::__cxx11::string> split(const std::string &input, const char sep, size_t max, bool keep_empty_parts)
  6 +{
  7 + std::list<std::string> list;
  8 + size_t start = 0;
  9 + size_t end;
  10 +
  11 + while (list.size() < max && (end = input.find(sep, start)) != std::string::npos)
  12 + {
  13 + if (start != end || keep_empty_parts)
  14 + list.push_back(input.substr(start, end - start));
  15 + start = end + 1; // increase by length of seperator.
  16 + }
  17 + if (start != input.size() || keep_empty_parts)
  18 + list.push_back(input.substr(start, std::string::npos));
  19 + return list;
  20 +}
@@ -4,6 +4,8 @@ @@ -4,6 +4,8 @@
4 #include <string.h> 4 #include <string.h>
5 #include <errno.h> 5 #include <errno.h>
6 #include <string> 6 #include <string>
  7 +#include <list>
  8 +#include <limits>
7 9
8 template<typename T> int check(int rc) 10 template<typename T> int check(int rc)
9 { 11 {
@@ -17,4 +19,6 @@ template&lt;typename T&gt; int check(int rc) @@ -17,4 +19,6 @@ template&lt;typename T&gt; int check(int rc)
17 return rc; 19 return rc;
18 } 20 }
19 21
  22 +std::list<std::string> split(const std::string &input, const char sep, size_t max = std::numeric_limits<int>::max(), bool keep_empty_parts = true);
  23 +
20 #endif // UTILS_H 24 #endif // UTILS_H