1 // Copyright (c) 1999-2018 David Muse
2 // See the COPYING file for more information
3
4 #include <rudiments/client.h>
5
6 #include <rudiments/charstring.h>
7
8 class clientprivate {
9 friend class client;
10 private:
11 char *_connecterror;
12 int32_t _timeoutsec;
13 int32_t _timeoutusec;
14 uint32_t _retrywait;
15 uint32_t _tries;
16 };
17
client()18 client::client() : filedescriptor() {
19 pvt=new clientprivate;
20 initialize(NULL,-1,-1,0,0);
21 }
22
client(const client & c)23 client::client(const client &c) : filedescriptor(c) {
24 pvt=new clientprivate;
25 clientClone(c);
26 }
27
operator =(const client & c)28 client &client::operator=(const client &c) {
29 if (this!=&c) {
30 filedescriptor::operator=(c);
31 delete[] pvt->_connecterror;
32 clientClone(c);
33 }
34 return *this;
35 }
36
~client()37 client::~client() {
38 delete[] pvt->_connecterror;
39 delete pvt;
40 }
41
initialize(char * connecterror,int32_t timeoutsec,int32_t timeoutusec,uint32_t retrywait,uint32_t tries)42 void client::initialize(char *connecterror,
43 int32_t timeoutsec, int32_t timeoutusec,
44 uint32_t retrywait, uint32_t tries) {
45 pvt->_connecterror=connecterror;
46 pvt->_timeoutsec=timeoutsec;
47 pvt->_timeoutusec=timeoutusec;
48 pvt->_retrywait=retrywait;
49 pvt->_tries=tries;
50 type("client");
51 }
52
clientClone(const client & c)53 void client::clientClone(const client &c) {
54 initialize(NULL,c.pvt->_timeoutsec,c.pvt->_timeoutusec,
55 c.pvt->_retrywait,c.pvt->_tries);
56 pvt->_connecterror=charstring::duplicate(c.pvt->_connecterror);
57 }
58
initialize(constnamevaluepairs * cd)59 void client::initialize(constnamevaluepairs *cd) {
60 // by default, do nothing
61 }
62
connect()63 int32_t client::connect() {
64 // by default, do nothing, return success
65 return RESULT_SUCCESS;
66 }
67
getVerboseConnectError()68 const char *client::getVerboseConnectError() {
69 return pvt->_connecterror;
70 }
71
setVerboseConnectError(const char * error)72 void client::setVerboseConnectError(const char *error) {
73 delete[] pvt->_connecterror;
74 pvt->_connecterror=charstring::duplicate(error);
75 }
76
_connecterror()77 char **client::_connecterror() {
78 return &pvt->_connecterror;
79 }
80
_timeoutsec()81 int32_t client::_timeoutsec() {
82 return pvt->_timeoutsec;
83 }
84
_timeoutusec()85 int32_t client::_timeoutusec() {
86 return pvt->_timeoutusec;
87 }
88
_retrywait()89 uint32_t client::_retrywait() {
90 return pvt->_retrywait;
91 }
92
_tries()93 uint32_t client::_tries() {
94 return pvt->_tries;
95 }
96