Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/*
This file is part of SLS.
Copyright (C) 2008 Sebastien LUTTRINGER <contact@seblu.net>
SLL is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; version 2 of the License.
SLL is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with SLL; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef CONNECTION_HH
# define CONNECTION_HH
# include <pthread.h>
class Connection {
// class methods
public:
unsigned long int getconnid();
// public methods
public:
Connection(int fd = -1);
virtual ~Connection();
void connect(const char *addr, int port);
void listen(int port, int max);
void disconnect();
inline bool connected();
Connection *accept();
// send methods
void send(const char* buf, size_t len);
inline void send(const string &data);
inline void sendln(const string &data);
// recv methods
char *recv(size_t size);
string recvln();
// buffer methods
void flush();
// info methods
string getlocalip();
string getlocalhostname();
int getlocalport();
string getremoteip();
string getremotehostname();
int getremoteport();
unsigned long int getid();
int getsocket();
// protected methods
protected:
inline void socket_();
inline void disconnect_();
inline void setlocalip_();
inline void setlocalport_();
inline void setremoteip_();
inline void setremotehostname_();
inline void setremoteport_();
// Protected datas
protected:
int socket_fd_; // connection socket
// storage of info about connection
int local_port_;
int remote_port_;
string local_ip_;
string local_hostname_;
string remote_ip_;
string remote_hostname_;
unsigned long int id_;
string rbuf_; // read buffer
string wbuf_; // write buffer
pthread_mutex_t c_mutex_; // connection mutex
pthread_mutex_t r_mutex_; // read mutex
pthread_mutex_t w_mutex_; // write mutex
};
# include "connection.hxx"
#endif