Go to the documentation of this file.
17 #ifndef USGOV_dfd7f74406ecd7bf1a137eafe457ab52dcb9c50fe177017cc67b73de69834ecb
18 #define USGOV_dfd7f74406ecd7bf1a137eafe457ab52dcb9c50fe177017cc67b73de69834ecb
21 #include <netinet/in.h>
22 #include <arpa/inet.h>
25 #include <unordered_map>
33 #include <condition_variable>
37 namespace us {
namespace gov {
48 static const char *
KO_7190,*KO_58961,*KO_60541,*KO_10100,*KO_20190,*KO_20191;
60 ko connect0(
const string& host, uint16_t port,
bool block);
61 virtual void disconnect(uint16_t seq,
const string& reason);
63 inline bool connected()
const {
return sock!=-1 && !finished.load(); }
71 chrono::system_clock::time_point
since;
76 void dump(
const string& prefix, ostream& os)
const;
77 virtual void dump_all(
const string& prefix, ostream& os)
const { dump(prefix, os); }
79 static string age(uint64_t msts);
80 static string age(chrono::system_clock::time_point time);
87 static string endpoint(uint32_t addr, uint16_t port);
101 atomic<int> busyrecv{0};
102 static struct timeval timeout;
106 atomic<int> sendref{0};
111 atomic<bool> finished{
false};
116 uint32_t attempt_read_fragment{0};
117 uint32_t disconnection_wrong_read{0};
118 uint32_t unknown_hostname{0};
119 uint32_t connection_refused{0};
120 uint32_t busy_outbound_pipe{0};
121 void dump(ostream&os)
const;
123 static counters_t counters;
virtual pair< ko, datagram * > decrypt0(datagram *d) const
string age(chrono::system_clock::time_point time)
Definition: daemon.cpp:263
static pair< ko, pair< string, uint16_t > > parse_endpoint(const string &ipport)
pair< uint16_t, string > finished_reason
Definition: client.h:110
static bool is_ko(const std::string &s)
Definition: ko.h:30
virtual pair< security_level_t, string > security_level() const
Definition: client.h:62
void prepare_worker_recv()
@ security_level_ok
Definition: client.h:51
ko init_sock2(uint32_t host, uint16_t port, bool block)
bool connected() const
Definition: client.h:63
static string age(chrono::system_clock::time_point time)
Definition: client.cs:143
@ security_level_disconnect
Definition: client.h:52
static string endpoint(const pair< uint32_t, uint16_t > &ip)
#define unlikely(x)
Definition: likely.h:30
pair< ko, datagram * > recv6()
bool is_finished() const
Definition: client.h:95
Definition: send_queue.h:48
security_level_t
Definition: client.h:50
virtual pair< ko, datagram * > encrypt0(datagram *d) const
void dump(const string &prefix, ostream &os) const
atomic< uint64_t > activity
Definition: client.h:74
static string age(uint64_t msts)
static busyled_t busyled_recv
Definition: client.h:100
uint32_t dend
Definition: datagram.h:201
static bool is_wan_ip(uint32_t)
static string endpoint(uint32_t addr, uint16_t port)
Definition: datagram.h:44
virtual void dump_all(const string &prefix, ostream &os) const
Definition: client.h:77
static uint16_t system_channel
Definition: datagram.h:199
uint32_t address
Definition: client.h:104
uint16_t port
Definition: client.h:105
string duration_str(chrono::milliseconds time)
Definition: client.cpp:459
virtual void on_connect(ko)
const ko_t * ko
Definition: ko.h:27
uint16_t decode_service() const
pair< uint32_t, uint16_t > raddress() const
ko connect0(const string &host, uint16_t port, bool block)
static void trim(string &)
us::gov::socket::client c
Definition: client.cpp:45
Definition: client.cpp:417
static constexpr ko ok
Definition: ko.h:28
int sock
Definition: client.h:103
ko connect0(uint32_t host, uint16_t port, bool block)
chrono::system_clock::time_point activity_recv
Definition: client.h:72
#define likely(x)
Definition: likely.h:29
chrono::system_clock::time_point last_test_alive
Definition: client.h:73
@ security_level_ban
Definition: client.h:53
virtual ko send1(datagram *)
static bool is_valid_ip(uint32_t)
virtual void disconnect(uint16_t seq, const string &reason)
pair< ko, datagram * > recv4x(datagram *d)
static const char * KO_7190
Definition: client.h:48
chrono::system_clock::time_point since
Definition: client.h:71
static uint32_t host2addr(const string &host)
static uint32_t ip4_encode(const string &addr)
#define log
Definition: gov.h:83
us::gov::socket::send_queue_t queue_t
Definition: client.h:46
static string ip4_decode(uint32_t addr)
void tuple_for_each(const Container &c, Fun fun)
Definition: client.cpp:454