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_1a04abafd244aa56917030342d01e6017e089433f96dd01ee598fed0d91162dd
18 #define USGOV_1a04abafd244aa56917030342d01e6017e089433f96dd01ee598fed0d91162dd
19 
20 #include <us/gov/relay.h>
22 #include <iostream>
23 #include <vector>
24 #include <set>
25 #include "fileattr_t.h"
26 #include <us/gov/bgtask.h>
27 
28 namespace us { namespace gov {
29 namespace dfs {
30  using namespace std;
32  using socket::datagram;
35 
36  struct daemon;
37 
38  struct mezzanine: bgtask {
39  typedef bgtask b;
40  mezzanine(daemon*);
42  };
43 
45  typedef relay::daemon b;
46  typedef dfs::mezzanine t;
47  daemon();
48  daemon(uint16_t port, uint16_t pport, uint8_t edges, uint8_t devices, int workers, const vector<pair<uint32_t,uint16_t>>& sn);
49  virtual ~daemon();
50  daemon(const daemon&)=delete;
51  daemon& operator =(const daemon&)=delete;
52  virtual bool process_work(socket::peer_t *c, datagram*d) override;
54  void dump(const string&prefix, ostream&) const;
55  void send_file(peer_t* c, datagram* request);
56  void save(const string& hash, const vector<uint8_t>& data, int propagate);
57  string load(const string& hash);
58  static string resolve_filename(const string& filename);
59  virtual bool check_dfs_permission(const hash_t& addr) const;
60  void wait();
61  void run();
62  void onwakeup();
63  ko start() override;
64  ko wait_ready(const chrono::system_clock::time_point& deadline) const override;
65  void stop() override;
66  void join() override;
67  void wakeup() { b::wakeup(); }
68  bool isup() const { return b::isup(); }
69 
70  condition_variable cv;
71  mutable mutex mx;
72  void index_set(const vector<pair<hash_t,uint32_t>>&);
73  void index_add(const hash_t&, uint32_t sz);
74  void index_rm(const hash_t&);
75  void index_clear();
76  void rm_file(const hash_t&h);
77  size_t rm_files(const set<hash_t>& exclude);
78  unordered_map<hash_t,uint32_t> index;
79  string fsroot;
80  };
81 
82 }
83 }}
84 
85 #endif
us::gov::dfs::daemon::isup
bool isup() const
Definition: daemon.h:68
us::gov::dfs::daemon::index_add
void index_add(const hash_t &, uint32_t sz)
us::gov::dfs::daemon::start
ko start() override
us::gov::dfs::daemon::~daemon
virtual ~daemon()
us::gov::dfs::daemon::t
dfs::mezzanine t
Definition: daemon.h:46
us::gov::dfs::daemon::rm_file
void rm_file(const hash_t &h)
bgtask.h
us::gov::dfs::daemon::run
void run()
fileattr_t.h
us::gov::dfs::daemon::index_set
void index_set(const vector< pair< hash_t, uint32_t >> &)
us.ko
Definition: ko.java:20
us::gov::dfs::peer_t
relay::peer_t peer_t
Definition: daemon.h:31
us
Definition: daemon.h:22
us::gov::crypto::ripemd160::value_type
Definition: ripemd160.h:38
us::gov::dfs::mezzanine
Definition: daemon.h:38
us::gov::dfs::daemon::wait_ready
ko wait_ready(const chrono::system_clock::time_point &deadline) const override
us::gov::dfs::mezzanine::b
bgtask b
Definition: daemon.h:39
us::gov::dfs::daemon::index_clear
void index_clear()
us::gov::dfs::daemon::index
unordered_map< hash_t, uint32_t > index
Definition: daemon.h:78
us::gov::dfs::daemon::save
void save(const string &hash, const vector< uint8_t > &data, int propagate)
us::gov::dfs::daemon::send_file
void send_file(peer_t *c, datagram *request)
us::gov::dfs::daemon::cv
condition_variable cv
Definition: daemon.h:70
us::gov::dfs::daemon::onwakeup
void onwakeup()
us::gov::socket::datagram
Definition: datagram.h:44
us::gov::dfs::hasher_t
crypto::ripemd160 hasher_t
Definition: daemon.h:33
us::gov::dfs::daemon::daemon
daemon(uint16_t port, uint16_t pport, uint8_t edges, uint8_t devices, int workers, const vector< pair< uint32_t, uint16_t >> &sn)
us::gov::dfs::daemon::join
void join() override
us::gov::dfs::daemon::daemon
daemon()
us::gov::dfs::daemon::b
relay::daemon b
Definition: daemon.h:45
us::gov::peer::peer_t
Definition: peer_t.h:38
us::gov::dfs::daemon::dump
void dump(const string &prefix, ostream &) const
us::gov::dfs::daemon
Definition: daemon.h:44
us::gov::dfs::hash_t
hasher_t::value_type hash_t
Definition: daemon.h:34
us::gov::crypto::ripemd160
Definition: ripemd160.h:34
ripemd160.h
c
Definition: client.cpp:417
us::gov::dfs::daemon::fsroot
string fsroot
Definition: daemon.h:79
relay.h
us::gov::dfs::daemon::load
string load(const string &hash)
us::gov::dfs::daemon::rm_files
size_t rm_files(const set< hash_t > &exclude)
us::gov::dfs::daemon::resolve_filename
static string resolve_filename(const string &filename)
us::gov::dfs::daemon::receive_file
void receive_file(peer_t *c, datagram *d)
us::gov::socket::peer_t
Definition: peer_t.h:28
std
Definition: app.h:380
us::gov::dfs::daemon::index_rm
void index_rm(const hash_t &)
us::gov::dfs::daemon::daemon
daemon(const daemon &)=delete
us::gov::dfs::mezzanine::d
daemon * d
Definition: daemon.h:41
us::gov::dfs::daemon::wait
void wait()
us::gov::dfs::daemon::process_work
virtual bool process_work(socket::peer_t *c, datagram *d) override
us::gov::dfs::daemon::check_dfs_permission
virtual bool check_dfs_permission(const hash_t &addr) const
us.pair
Definition: pair.java:19
us::gov::dfs::daemon::wakeup
void wakeup()
Definition: daemon.h:67
us::gov::dfs::daemon::stop
void stop() override
us::gov::bgtask
Definition: bgtask.h:31
us::gov::relay::daemon
Definition: daemon.h:35
us::gov::dfs::daemon::mx
mutex mx
Definition: daemon.h:71