plebble
daemon.h
Go to the documentation of this file.
1 /*
2 -------------------------------------------------------------------------------
3  PLEBBLE
4 -------------------------------------------------------------------------------
5  Copyright (C) 2019-2020 KATLAS Technology. (http://katlastechnology.com)
6  Copyright (C) 2017-2020 Marcos Mayorga. (mm@mm-studios.com)
7 
8  This file is part of our Plebble(R) Platform.
9 
10  The code below cannot be copied, used for any purpose other than the one
11  agreed and/or distributed without the express permission of
12  KATLAS Technology.
13 -------------------------------------------------------------------------------
14 
15 
16 */
17 #ifndef USGOV_f06019c0635c00639ca65f74f67bed1a4db6bb3d506993ed4bac336c93eb48bb
18 #define USGOV_f06019c0635c00639ca65f74f67bed1a4db6bb3d506993ed4bac336c93eb48bb
19 
20 #include "server.h"
21 #include <atomic>
22 #include <unordered_set>
23 #include <us/gov/config.h>
24 #include <us/gov/bgtask.h>
25 #include "thpool.h"
26 
27 namespace us { namespace gov {
28 namespace socket {
29  using namespace std;
30  struct peer_t;
31 
32  struct daemon: server {
33  typedef server b;
34  static const char* KO_4093;
35  daemon();
36  daemon(const daemon&)=delete;
37  daemon& operator = (const daemon&)=delete;
38  daemon(uint16_t port, uint8_t workers);
39  ~daemon() override;
40  client* create_client(int sock) override;
41  ko start() override;
42  ko wait_ready(const chrono::system_clock::time_point& deadline) const override;
43  void stop() override;
44  void join() override;
45  void dump(const string& prefix, ostream& os) const;
46  void receive_and_process(client*) override;
48  virtual bool process_work(peer_t *c, datagram*d);
49  virtual string homedir() const=0;
50  #if CFG_COUNTERS==1
51  struct counters_t {
52  uint32_t disconnection_normal{0};
53  uint32_t disconnection_unknown_service{0};
54  void dump(ostream& os) const;
55  };
56  static counters_t counters;
57  #endif
58  typedef thpool pool_t;
60  uint8_t num_workers;
61  };
62 
63 }
64 }}
65 
66 #endif
67 
us::gov::socket::daemon::~daemon
~daemon() override
us::gov::socket::daemon::homedir
virtual string homedir() const =0
us::gov::socket::daemon::wait_ready
ko wait_ready(const chrono::system_clock::time_point &deadline) const override
bgtask.h
us::gov::socket::client
Definition: client.h:44
us.ko
Definition: ko.java:20
us::gov::socket::daemon::pool_t
thpool pool_t
Definition: daemon.h:58
us::gov::socket::daemon::process_work
virtual bool process_work(peer_t *c, datagram *d)
us::gov::socket::daemon::daemon
daemon(uint16_t port, uint8_t workers)
us::gov::dfs::peer_t
relay::peer_t peer_t
Definition: daemon.h:31
us
Definition: daemon.h:22
us::gov::socket::daemon::KO_4093
static const char * KO_4093
Definition: daemon.h:34
us::gov::socket::thpool
Definition: thpool.h:35
us::gov::socket::daemon::daemon
daemon()
thpool.h
us::gov::socket::datagram
Definition: datagram.h:44
us::gov::socket::daemon::num_workers
uint8_t num_workers
Definition: daemon.h:60
us::gov::socket::daemon::create_client
client * create_client(int sock) override
us::gov::socket::daemon::b
server b
Definition: daemon.h:33
us::gov::socket::daemon::daemon
daemon(const daemon &)=delete
us::gov::socket::server
Definition: server.h:45
us::gov::socket::daemon::start
ko start() override
c
Definition: client.cpp:417
us::gov::socket::daemon::dump
void dump(const string &prefix, ostream &os) const
us::gov::socket::peer_t
Definition: peer_t.h:28
std
Definition: app.h:380
us::gov::socket::daemon::receive_and_process
void receive_and_process(client *) override
config.h
us::gov::socket::daemon::stop
void stop() override
us::gov::socket::daemon
Definition: daemon.h:32
us::gov::socket::daemon::join
void join() override
server.h
us::gov::socket::daemon::process_work
void process_work(peer_t *c)
us::gov::socket::daemon::pool
pool_t pool
Definition: daemon.h:59