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_56c4ea14fe04c13aabcd1dd5ef4f05856a66f6515dcb1855f3046da43eea737a
18 #define USGOV_56c4ea14fe04c13aabcd1dd5ef4f05856a66f6515dcb1855f3046da43eea737a
19 
20 #include <us/gov/peer/daemon.h>
21 #include "peer_t.h"
22 #include <unordered_set>
23 #include <us/gov/crypto/ec.h>
24 #include <iostream>
25 #include <mutex>
26 #include <functional>
27 
28 namespace us{ namespace gov {
29 namespace relay {
30  using namespace std;
31  using socket::datagram;
32 
33  struct evidence;
34 
36  typedef peer::daemon b;
38  daemon();
39  daemon(const daemon&)=delete;
40  daemon& operator =(const daemon&)=delete;
41  daemon(uint16_t port, uint16_t pport, uint8_t edges, uint8_t devices, int workers);
42  ~daemon() override;
43  bool process_work(socket::peer_t *c, datagram*d) override;
44  bool process_evidence(const datagram&);
45  void process_harvester_payload(const string& payload, string& ans);
46  virtual bool process_evidence(evidence*)=0;
47  void dump(const string& prefix, ostream&os) const;
49  int send(int num, const socket::client* exclude, const datagram&);
50  int send(int num, const socket::client* exclude, datagram*);
51  int grid_devices_send(const datagram& d);
52  int grid_devices_send(const datagram& d, const function<bool (const client&)>&);
53  int grid_devices_send(const vector<datagram*>& v, const function<bool (const client&)>& filter);
54  void rollback(uint16_t timeout, string payload);
55  void on_destroy(client&) override;
56  virtual bool check_relay_permission(const hash_t& addr) const;
57  virtual evidence* parse_custom_evidence(const string& payload) const;
58 
59  struct mem_t: unordered_map<hash_t,string> {
60  mem_t();
61  void flush_back(const hash_t& me);
62  void init(id::peer_t*originator);
63 
64  mutex mx;
65  size_t resps{0};
66  string anspayload;
67  id::peer_t *originator{nullptr};
68  };
69 
71  };
72 }
73 }}
74 
75 #endif
76 
us::gov::relay::daemon::grid_devices_send
int grid_devices_send(const datagram &d, const function< bool(const client &)> &)
us::gov::socket::client
Definition: client.h:44
us::gov::relay::daemon::mem_t::anspayload
string anspayload
Definition: daemon.h:66
us
Definition: daemon.h:22
us::gov::crypto::ripemd160::value_type
Definition: ripemd160.h:38
us::gov::relay::daemon::mem_t::init
void init(id::peer_t *originator)
us::gov::relay::daemon::mem_t
Definition: daemon.h:59
us::gov::relay::daemon::hash_t
crypto::ec::keys::pub_t::hash_t hash_t
Definition: daemon.h:37
us::gov::relay::daemon::~daemon
~daemon() override
us::gov::relay::daemon::send
int send(int num, const socket::client *exclude, datagram *)
us::gov::relay::daemon::parse_custom_evidence
virtual evidence * parse_custom_evidence(const string &payload) const
us::gov::relay::daemon::process_evidence
virtual bool process_evidence(evidence *)=0
us::gov::relay::daemon::process_work
bool process_work(socket::peer_t *c, datagram *d) override
us::gov::socket::datagram
Definition: datagram.h:44
us::gov::relay::daemon::check_relay_permission
virtual bool check_relay_permission(const hash_t &addr) const
us::gov::relay::daemon::grid_devices_send
int grid_devices_send(const datagram &d)
us::gov::relay::daemon::daemon
daemon()
daemon.h
us::gov::relay::daemon::mem_t::mx
mutex mx
Definition: daemon.h:64
us::gov::relay::daemon::on_destroy
void on_destroy(client &) override
us::gov::relay::daemon::send
int send(int num, const socket::client *exclude, const datagram &)
peer_t.h
us::gov::relay::daemon::b
peer::daemon b
Definition: daemon.h:36
us::gov::relay::daemon::process_harvester_payload
void process_harvester_payload(const string &payload, string &ans)
c
Definition: client.cpp:417
us::gov::relay::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::relay::daemon::daemon
daemon(const daemon &)=delete
us::gov::relay::daemon::_mem
mem_t _mem
Definition: daemon.h:70
us::gov::relay::daemon::process_evidence
bool process_evidence(const datagram &)
us::gov::relay::daemon::daemon
daemon(uint16_t port, uint16_t pport, uint8_t edges, uint8_t devices, int workers)
us::gov::relay::daemon::grid_devices_send
int grid_devices_send(const vector< datagram * > &v, const function< bool(const client &)> &filter)
us::gov::relay::evidence
Definition: evidence.h:31
us::gov::relay::daemon::rollback
void rollback(uint16_t timeout, string payload)
ec.h
us::gov::id::peer_t
Definition: peer_t.h:35
us::gov::relay::daemon::mem_t::flush_back
void flush_back(const hash_t &me)
us::gov::peer::daemon
Definition: daemon.h:51
us::gov::relay::daemon::send_evidence
void send_evidence(datagram *)
us::gov::relay::daemon::mem_t::mem_t
mem_t()
us::gov::relay::daemon
Definition: daemon.h:35