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