Eris
1.3.21
Main Page
Related Pages
Classes
Files
File List
Eris
BaseConnection.h
1
#ifndef ERIS_BASE_CONNECTION_H
2
#define ERIS_BASE_CONNECTION_H
3
4
#include <Atlas/Objects/ObjectsFwd.h>
5
6
#include <sigc++/trackable.h>
7
#include <sigc++/signal.h>
8
9
#include <string>
10
11
class
tcp_socket_stream;
12
13
namespace
Atlas
14
{
15
class
Bridge;
16
class
Codec;
17
namespace
Net
18
{
19
class
StreamConnect;
20
}
21
}
22
23
namespace
Eris
24
{
25
26
// Forward declarations
27
class
Timeout;
28
30
class
BaseConnection
:
virtual
public
sigc::trackable
31
{
32
public
:
34
virtual
~BaseConnection
();
35
38
virtual
int
connect
(
const
std::string &host,
short
port);
39
41
typedef
enum
{
42
INVALID_STATUS
= 0,
43
NEGOTIATE
,
44
CONNECTING
,
45
CONNECTED
,
46
DISCONNECTED
,
47
DISCONNECTING
,
48
49
// doesn't really belong here, but enums aren't subclassable
50
QUERY_GET
51
}
Status
;
52
54
Status
getStatus
()
const
55
{
return
_status
; }
56
58
bool
isConnected
()
const
59
{
return
(
_status
==
CONNECTED
) || (
_status
==
DISCONNECTING
);}
60
64
int
getFileDescriptor
();
65
71
const
std::string&
getHost
()
const
;
72
78
short
getPort
()
const
;
79
81
sigc::signal<void>
Connected
;
82
84
sigc::signal<void>
Disconnected
;
85
protected
:
87
90
BaseConnection
(
const
std::string &cnm,
const
std::string &
id
, Atlas::Bridge *br);
91
93
void
recv
();
94
96
virtual
void
setStatus
(
Status
sc);
97
99
virtual
void
onConnect
();
100
102
virtual
void
handleFailure
(
const
std::string &msg) = 0;
103
104
virtual
void
handleTimeout(
const
std::string& msg) = 0;
105
106
void
onConnectTimeout();
107
void
onNegotiateTimeout();
108
111
void
hardDisconnect
(
bool
emit);
112
114
void
nonblockingConnect
();
115
117
void
pollNegotiation
();
118
119
Atlas::Objects::ObjectsEncoder*
_encode
;
120
Atlas::Net::StreamConnect*
_sc
;
121
Atlas::Codec* m_codec;
122
123
Status
_status
;
124
const
std::string
_id
;
125
126
tcp_socket_stream*
_stream
;
127
std::string
_clientName
;
128
131
Atlas::Bridge*
_bridge
;
132
Timeout
*
_timeout
;
133
134
std::string
_host
;
135
short
_port
;
136
};
137
138
}
139
140
#endif
141
Generated by
1.8.3.1