--- /dev/null
+#ifndef __MAIN_THREAD_H__
+#define __MAIN_THREAD_H__
+
+#include <list>
+
+#include "os_int.h"
+
+class CONFIG_THREAD;
+class ADMINS;
+class TARIFFS;
+class USERS;
+class SETTINGS;
+
+class MAIN_THREAD {
+public:
+ MAIN_THREAD(ADMINS * a, TARIFFS * t, USERS * u, const SETTINGS * s);
+ ~MAIN_THREAD();
+
+ void operator() ();
+
+ void Stop() { running = false; };
+ void SetPort(uint16_t p) { port = p; };
+ void SetClasses(ADMINS * a,
+ TARIFFS * t,
+ USERS * u,
+ const SETTINGS * s)
+ {
+ admins = a;
+ tariffs = t;
+ users = u;
+ settings = s;
+ };
+
+ void SetMaxConnections(unsigned max) { maxConnections = max; };
+
+private:
+ bool running;
+ int sd;
+ uint16_t port;
+ unsigned maxConnections;
+
+ ADMINS * admins;
+ TARIFFS * tariffs;
+ USERS * users;
+ const SETTINGS * settings;
+
+ std::list<CONFIG_THREAD> connections;
+
+ bool InitNetwork();
+ bool WaitConnection();
+ void AcceptConnection();
+ void CleanupThreads();
+
+};
+
+#endif