diff options
-rw-r--r-- | src/client.cpp | 19 | ||||
-rw-r--r-- | src/client.h | 8 | ||||
-rw-r--r-- | src/clientlink.cpp | 17 | ||||
-rw-r--r-- | src/clientlink.h | 25 | ||||
-rw-r--r-- | src/clientlinkfactory.cpp | 17 | ||||
-rw-r--r-- | src/clientlinkfactory.h | 26 | ||||
-rw-r--r-- | src/conduit.cpp | 7 | ||||
-rw-r--r-- | src/conduit.h | 26 | ||||
-rw-r--r-- | src/itoserver.cpp | 67 | ||||
-rw-r--r-- | src/itoserver.h | 34 | ||||
-rw-r--r-- | src/protocol.cpp | 4 | ||||
-rw-r--r-- | src/protocol.h | 3 | ||||
-rw-r--r-- | src/server.cpp | 31 | ||||
-rw-r--r-- | src/server.h | 24 | ||||
-rw-r--r-- | src/socket.cpp | 4 | ||||
-rw-r--r-- | src/socket.h | 1 |
16 files changed, 308 insertions, 5 deletions
diff --git a/src/client.cpp b/src/client.cpp index 1ef9151..d1eb29c 100644 --- a/src/client.cpp +++ b/src/client.cpp | |||
@@ -11,15 +11,18 @@ | |||
11 | #include <errno.h> | 11 | #include <errno.h> |
12 | #include "bu/exceptions.h" | 12 | #include "bu/exceptions.h" |
13 | #include "bu/protocol.h" | 13 | #include "bu/protocol.h" |
14 | #include "bu/clientlink.h" | ||
15 | #include "bu/clientlinkfactory.h" | ||
14 | 16 | ||
15 | /** Read buffer size. */ | 17 | /** Read buffer size. */ |
16 | #define RBS (1024*2) | 18 | #define RBS (1024*2) |
17 | 19 | ||
18 | Bu::Client::Client( Bu::Socket *pSocket ) : | 20 | Bu::Client::Client( Bu::Socket *pSocket, class Bu::ClientLinkFactory *pfLink ) : |
19 | pSocket( pSocket ), | 21 | pSocket( pSocket ), |
20 | pProto( NULL ), | 22 | pProto( NULL ), |
21 | nRBOffset( 0 ), | 23 | nRBOffset( 0 ), |
22 | bWantsDisconnect( false ) | 24 | bWantsDisconnect( false ), |
25 | pfLink( pfLink ) | ||
23 | { | 26 | { |
24 | } | 27 | } |
25 | 28 | ||
@@ -233,3 +236,15 @@ void Bu::Client::close() | |||
233 | { | 236 | { |
234 | pSocket->close(); | 237 | pSocket->close(); |
235 | } | 238 | } |
239 | |||
240 | Bu::ClientLink *Bu::Client::getLink() | ||
241 | { | ||
242 | return pfLink->createLink( this ); | ||
243 | } | ||
244 | |||
245 | void Bu::Client::onMessage( const Bu::FString &sMsg ) | ||
246 | { | ||
247 | if( pProto ) | ||
248 | pProto->onMessage( this, sMsg ); | ||
249 | } | ||
250 | |||
diff --git a/src/client.h b/src/client.h index 3764375..20eb8b8 100644 --- a/src/client.h +++ b/src/client.h | |||
@@ -16,6 +16,7 @@ namespace Bu | |||
16 | { | 16 | { |
17 | class Protocol; | 17 | class Protocol; |
18 | class Socket; | 18 | class Socket; |
19 | class ClientLinkFactory; | ||
19 | 20 | ||
20 | /** | 21 | /** |
21 | *@author Mike Buland | 22 | *@author Mike Buland |
@@ -24,7 +25,7 @@ namespace Bu | |||
24 | class Client | 25 | class Client |
25 | { | 26 | { |
26 | public: | 27 | public: |
27 | Client( Bu::Socket *pSocket ); | 28 | Client( Bu::Socket *pSocket, Bu::ClientLinkFactory *pfLink ); |
28 | virtual ~Client(); | 29 | virtual ~Client(); |
29 | 30 | ||
30 | void processInput(); | 31 | void processInput(); |
@@ -59,6 +60,10 @@ namespace Bu | |||
59 | void disconnect(); | 60 | void disconnect(); |
60 | bool wantsDisconnect(); | 61 | bool wantsDisconnect(); |
61 | 62 | ||
63 | class ClientLink *getLink(); | ||
64 | |||
65 | void onMessage( const Bu::FString &sMsg ); | ||
66 | |||
62 | private: | 67 | private: |
63 | Bu::Socket *pSocket; | 68 | Bu::Socket *pSocket; |
64 | Bu::Protocol *pProto; | 69 | Bu::Protocol *pProto; |
@@ -66,6 +71,7 @@ namespace Bu | |||
66 | int nRBOffset; | 71 | int nRBOffset; |
67 | Bu::FString sWriteBuf; | 72 | Bu::FString sWriteBuf; |
68 | bool bWantsDisconnect; | 73 | bool bWantsDisconnect; |
74 | class Bu::ClientLinkFactory *pfLink; | ||
69 | }; | 75 | }; |
70 | } | 76 | } |
71 | 77 | ||
diff --git a/src/clientlink.cpp b/src/clientlink.cpp new file mode 100644 index 0000000..7061a71 --- /dev/null +++ b/src/clientlink.cpp | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2007 Xagasoft, All rights reserved. | ||
3 | * | ||
4 | * This file is part of the libbu++ library and is released under the | ||
5 | * terms of the license contained in the file LICENSE. | ||
6 | */ | ||
7 | |||
8 | #include "bu/clientlink.h" | ||
9 | |||
10 | Bu::ClientLink::ClientLink() | ||
11 | { | ||
12 | } | ||
13 | |||
14 | Bu::ClientLink::~ClientLink() | ||
15 | { | ||
16 | } | ||
17 | |||
diff --git a/src/clientlink.h b/src/clientlink.h new file mode 100644 index 0000000..e76665b --- /dev/null +++ b/src/clientlink.h | |||
@@ -0,0 +1,25 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2007 Xagasoft, All rights reserved. | ||
3 | * | ||
4 | * This file is part of the libbu++ library and is released under the | ||
5 | * terms of the license contained in the file LICENSE. | ||
6 | */ | ||
7 | |||
8 | #ifndef BU_CLIENT_LINK_H | ||
9 | #define BU_CLIENT_LINK_H | ||
10 | |||
11 | #include "bu/fstring.h" | ||
12 | |||
13 | namespace Bu | ||
14 | { | ||
15 | class ClientLink | ||
16 | { | ||
17 | public: | ||
18 | ClientLink(); | ||
19 | virtual ~ClientLink(); | ||
20 | |||
21 | virtual void sendMsg( const Bu::FString &sMsg )=0; | ||
22 | }; | ||
23 | }; | ||
24 | |||
25 | #endif | ||
diff --git a/src/clientlinkfactory.cpp b/src/clientlinkfactory.cpp new file mode 100644 index 0000000..523d8ec --- /dev/null +++ b/src/clientlinkfactory.cpp | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2007 Xagasoft, All rights reserved. | ||
3 | * | ||
4 | * This file is part of the libbu++ library and is released under the | ||
5 | * terms of the license contained in the file LICENSE. | ||
6 | */ | ||
7 | |||
8 | #include "clientlinkfactory.h" | ||
9 | |||
10 | Bu::ClientLinkFactory::ClientLinkFactory() | ||
11 | { | ||
12 | } | ||
13 | |||
14 | Bu::ClientLinkFactory::~ClientLinkFactory() | ||
15 | { | ||
16 | } | ||
17 | |||
diff --git a/src/clientlinkfactory.h b/src/clientlinkfactory.h new file mode 100644 index 0000000..4d3ed7b --- /dev/null +++ b/src/clientlinkfactory.h | |||
@@ -0,0 +1,26 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2007 Xagasoft, All rights reserved. | ||
3 | * | ||
4 | * This file is part of the libbu++ library and is released under the | ||
5 | * terms of the license contained in the file LICENSE. | ||
6 | */ | ||
7 | |||
8 | #ifndef BU_CLIENT_LINK_FACTORY_H | ||
9 | #define BU_CLIENT_LINK_FACTORY_H | ||
10 | |||
11 | namespace Bu | ||
12 | { | ||
13 | class Client; | ||
14 | class ClientLink; | ||
15 | |||
16 | class ClientLinkFactory | ||
17 | { | ||
18 | public: | ||
19 | ClientLinkFactory(); | ||
20 | virtual ~ClientLinkFactory(); | ||
21 | |||
22 | virtual Bu::ClientLink *createLink( Bu::Client *pClient )=0; | ||
23 | }; | ||
24 | }; | ||
25 | |||
26 | #endif | ||
diff --git a/src/conduit.cpp b/src/conduit.cpp new file mode 100644 index 0000000..413bf7c --- /dev/null +++ b/src/conduit.cpp | |||
@@ -0,0 +1,7 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2007 Xagasoft, All rights reserved. | ||
3 | * | ||
4 | * This file is part of the libbu++ library and is released under the | ||
5 | * terms of the license contained in the file LICENSE. | ||
6 | */ | ||
7 | |||
diff --git a/src/conduit.h b/src/conduit.h new file mode 100644 index 0000000..4598bd1 --- /dev/null +++ b/src/conduit.h | |||
@@ -0,0 +1,26 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2007 Xagasoft, All rights reserved. | ||
3 | * | ||
4 | * This file is part of the libbu++ library and is released under the | ||
5 | * terms of the license contained in the file LICENSE. | ||
6 | */ | ||
7 | |||
8 | #ifndef BU_CONDUIT_H | ||
9 | #define BU_CONDUIT_H | ||
10 | |||
11 | #include "bu/stream.h" | ||
12 | #include "bu/fstring.h" | ||
13 | |||
14 | namespace Bu | ||
15 | { | ||
16 | /** | ||
17 | * Simple inter-thread communication stream. This acts like a pair of | ||
18 | * pipes for stream communication between any two things, but without the | ||
19 | * use of pipes, making this a bad choice for IPC. | ||
20 | */ | ||
21 | class Conduit : public Stream | ||
22 | { | ||
23 | }; | ||
24 | } | ||
25 | |||
26 | #endif | ||
diff --git a/src/itoserver.cpp b/src/itoserver.cpp index 7426e8a..db5ae04 100644 --- a/src/itoserver.cpp +++ b/src/itoserver.cpp | |||
@@ -127,7 +127,8 @@ Bu::ItoServer::ItoClient::ItoClient( ItoServer &rSrv, int iSocket, int iPort, | |||
127 | FD_SET( iSocket, &fdActive ); | 127 | FD_SET( iSocket, &fdActive ); |
128 | 128 | ||
129 | pClient = new Client( | 129 | pClient = new Client( |
130 | new Bu::Socket( iSocket ) | 130 | new Bu::Socket( iSocket ), |
131 | new SrvClientLinkFactory( rSrv ) | ||
131 | ); | 132 | ); |
132 | } | 133 | } |
133 | 134 | ||
@@ -137,7 +138,10 @@ Bu::ItoServer::ItoClient::~ItoClient() | |||
137 | 138 | ||
138 | void *Bu::ItoServer::ItoClient::run() | 139 | void *Bu::ItoServer::ItoClient::run() |
139 | { | 140 | { |
141 | imProto.lock(); | ||
140 | rSrv.onNewConnection( pClient, iPort ); | 142 | rSrv.onNewConnection( pClient, iPort ); |
143 | pClient->processOutput(); | ||
144 | imProto.unlock(); | ||
141 | 145 | ||
142 | for(;;) | 146 | for(;;) |
143 | { | 147 | { |
@@ -151,14 +155,29 @@ void *Bu::ItoServer::ItoClient::run() | |||
151 | throw ExceptionBase("Error attempting to scan open connections."); | 155 | throw ExceptionBase("Error attempting to scan open connections."); |
152 | } | 156 | } |
153 | 157 | ||
158 | while( !qMsg.isEmpty() ) | ||
159 | { | ||
160 | imProto.lock(); | ||
161 | Bu::FString *pMsg = qMsg.dequeue(); | ||
162 | pClient->onMessage( *pMsg ); | ||
163 | delete pMsg; | ||
164 | pClient->processOutput(); | ||
165 | imProto.unlock(); | ||
166 | } | ||
167 | |||
154 | if( FD_ISSET( iSocket, &fdRead ) ) | 168 | if( FD_ISSET( iSocket, &fdRead ) ) |
155 | { | 169 | { |
170 | imProto.lock(); | ||
156 | pClient->processInput(); | 171 | pClient->processInput(); |
172 | imProto.unlock(); | ||
157 | if( !pClient->isOpen() ) | 173 | if( !pClient->isOpen() ) |
158 | { | 174 | { |
175 | imProto.lock(); | ||
159 | rSrv.onClosedConnection( pClient ); | 176 | rSrv.onClosedConnection( pClient ); |
177 | imProto.unlock(); | ||
160 | 178 | ||
161 | rSrv.clientCleanup( iSocket ); | 179 | rSrv.clientCleanup( iSocket ); |
180 | |||
162 | return NULL; | 181 | return NULL; |
163 | } | 182 | } |
164 | } | 183 | } |
@@ -166,9 +185,55 @@ void *Bu::ItoServer::ItoClient::run() | |||
166 | // Now we just try to write all the pending data on the socket. | 185 | // Now we just try to write all the pending data on the socket. |
167 | // this could be done better eventually, if we care about the socket | 186 | // this could be done better eventually, if we care about the socket |
168 | // wanting to accept writes (using a select). | 187 | // wanting to accept writes (using a select). |
188 | imProto.lock(); | ||
169 | pClient->processOutput(); | 189 | pClient->processOutput(); |
190 | imProto.unlock(); | ||
170 | } | 191 | } |
171 | 192 | ||
172 | return NULL; | 193 | return NULL; |
173 | } | 194 | } |
174 | 195 | ||
196 | Bu::ItoServer::SrvClientLink::SrvClientLink( ItoClient *pClient ) : | ||
197 | pClient( pClient ) | ||
198 | { | ||
199 | } | ||
200 | |||
201 | Bu::ItoServer::SrvClientLink::~SrvClientLink() | ||
202 | { | ||
203 | } | ||
204 | |||
205 | void Bu::ItoServer::SrvClientLink::sendMsg( const Bu::FString &sMsg ) | ||
206 | { | ||
207 | if( !pClient->imProto.trylock() ) | ||
208 | { | ||
209 | pClient->pClient->onMessage( sMsg ); | ||
210 | pClient->pClient->processOutput(); | ||
211 | pClient->imProto.unlock(); | ||
212 | } | ||
213 | else | ||
214 | { | ||
215 | Bu::FString *pMsg = new Bu::FString( sMsg ); | ||
216 | pClient->qMsg.enqueue( pMsg ); | ||
217 | } | ||
218 | } | ||
219 | |||
220 | Bu::ItoServer::SrvClientLinkFactory::SrvClientLinkFactory( | ||
221 | Bu::ItoServer &rSrv ) : | ||
222 | rSrv( rSrv ) | ||
223 | { | ||
224 | } | ||
225 | |||
226 | Bu::ItoServer::SrvClientLinkFactory::~SrvClientLinkFactory() | ||
227 | { | ||
228 | } | ||
229 | |||
230 | Bu::ClientLink *Bu::ItoServer::SrvClientLinkFactory::createLink( | ||
231 | Bu::Client *pClient ) | ||
232 | { | ||
233 | rSrv.imClients.lock(); | ||
234 | ItoClient *pCli = rSrv.hClients.get( *pClient->getSocket() ); | ||
235 | rSrv.imClients.unlock(); | ||
236 | |||
237 | return new SrvClientLink( pCli ); | ||
238 | } | ||
239 | |||
diff --git a/src/itoserver.h b/src/itoserver.h index f11960c..09ed1cd 100644 --- a/src/itoserver.h +++ b/src/itoserver.h | |||
@@ -17,6 +17,9 @@ | |||
17 | #include "bu/itoqueue.h" | 17 | #include "bu/itoqueue.h" |
18 | #include "bu/set.h" | 18 | #include "bu/set.h" |
19 | 19 | ||
20 | #include "bu/clientlink.h" | ||
21 | #include "bu/clientlinkfactory.h" | ||
22 | |||
20 | namespace Bu | 23 | namespace Bu |
21 | { | 24 | { |
22 | class ServerSocket; | 25 | class ServerSocket; |
@@ -47,6 +50,7 @@ namespace Bu | |||
47 | class ItoServer : public Ito | 50 | class ItoServer : public Ito |
48 | { | 51 | { |
49 | friend class ItoClient; | 52 | friend class ItoClient; |
53 | friend class SrvClientLinkFactory; | ||
50 | public: | 54 | public: |
51 | ItoServer(); | 55 | ItoServer(); |
52 | virtual ~ItoServer(); | 56 | virtual ~ItoServer(); |
@@ -65,8 +69,10 @@ namespace Bu | |||
65 | virtual void *run(); | 69 | virtual void *run(); |
66 | 70 | ||
67 | private: | 71 | private: |
72 | class SrvClientLink; | ||
68 | class ItoClient : public Ito | 73 | class ItoClient : public Ito |
69 | { | 74 | { |
75 | friend class Bu::ItoServer::SrvClientLink; | ||
70 | public: | 76 | public: |
71 | ItoClient( ItoServer &rSrv, int nSocket, int nPort, | 77 | ItoClient( ItoServer &rSrv, int nSocket, int nPort, |
72 | int nTimeoutSec, int nTimeoutUSec ); | 78 | int nTimeoutSec, int nTimeoutUSec ); |
@@ -74,6 +80,9 @@ namespace Bu | |||
74 | 80 | ||
75 | virtual void *run(); | 81 | virtual void *run(); |
76 | 82 | ||
83 | typedef ItoQueue<Bu::FString *> StringQueue; | ||
84 | StringQueue qMsg; | ||
85 | |||
77 | private: | 86 | private: |
78 | ItoServer &rSrv; | 87 | ItoServer &rSrv; |
79 | Client *pClient; | 88 | Client *pClient; |
@@ -82,6 +91,31 @@ namespace Bu | |||
82 | int iPort; | 91 | int iPort; |
83 | int nTimeoutSec; | 92 | int nTimeoutSec; |
84 | int nTimeoutUSec; | 93 | int nTimeoutUSec; |
94 | ItoMutex imProto; | ||
95 | }; | ||
96 | |||
97 | class SrvClientLink : public Bu::ClientLink | ||
98 | { | ||
99 | public: | ||
100 | SrvClientLink( ItoClient *pClient ); | ||
101 | virtual ~SrvClientLink(); | ||
102 | |||
103 | virtual void sendMsg( const Bu::FString &sMsg ); | ||
104 | |||
105 | private: | ||
106 | ItoClient *pClient; | ||
107 | }; | ||
108 | |||
109 | class SrvClientLinkFactory : public Bu::ClientLinkFactory | ||
110 | { | ||
111 | public: | ||
112 | SrvClientLinkFactory( ItoServer &rSrv ); | ||
113 | virtual ~SrvClientLinkFactory(); | ||
114 | |||
115 | virtual Bu::ClientLink *createLink( Bu::Client *pClient ); | ||
116 | |||
117 | private: | ||
118 | ItoServer &rSrv; | ||
85 | }; | 119 | }; |
86 | 120 | ||
87 | int nTimeoutSec; | 121 | int nTimeoutSec; |
diff --git a/src/protocol.cpp b/src/protocol.cpp index 7a59586..e197b7f 100644 --- a/src/protocol.cpp +++ b/src/protocol.cpp | |||
@@ -17,3 +17,7 @@ Bu::Protocol::~Protocol() | |||
17 | { | 17 | { |
18 | } | 18 | } |
19 | 19 | ||
20 | void Bu::Protocol::onMessage( Bu::Client *pClient, const Bu::FString &sMsg ) | ||
21 | { | ||
22 | } | ||
23 | |||
diff --git a/src/protocol.h b/src/protocol.h index c557512..61fff93 100644 --- a/src/protocol.h +++ b/src/protocol.h | |||
@@ -10,6 +10,8 @@ | |||
10 | 10 | ||
11 | #include <stdint.h> | 11 | #include <stdint.h> |
12 | 12 | ||
13 | #include "bu/fstring.h" | ||
14 | |||
13 | namespace Bu | 15 | namespace Bu |
14 | { | 16 | { |
15 | class Client; | 17 | class Client; |
@@ -26,6 +28,7 @@ namespace Bu | |||
26 | 28 | ||
27 | virtual void onNewConnection( Bu::Client *pClient )=0; | 29 | virtual void onNewConnection( Bu::Client *pClient )=0; |
28 | virtual void onNewData( Bu::Client *pClient )=0; | 30 | virtual void onNewData( Bu::Client *pClient )=0; |
31 | virtual void onMessage( Bu::Client *pClient, const Bu::FString &sMsg ); | ||
29 | 32 | ||
30 | private: | 33 | private: |
31 | 34 | ||
diff --git a/src/server.cpp b/src/server.cpp index 861e2e3..cca486a 100644 --- a/src/server.cpp +++ b/src/server.cpp | |||
@@ -109,10 +109,39 @@ void Bu::Server::addClient( int nSocket, int nPort ) | |||
109 | FD_SET( nSocket, &fdActive ); | 109 | FD_SET( nSocket, &fdActive ); |
110 | 110 | ||
111 | Client *c = new Client( | 111 | Client *c = new Client( |
112 | new Bu::Socket( nSocket ) | 112 | new Bu::Socket( nSocket ), |
113 | new SrvClientLinkFactory() | ||
113 | ); | 114 | ); |
114 | hClients.insert( nSocket, c ); | 115 | hClients.insert( nSocket, c ); |
115 | 116 | ||
116 | onNewConnection( c, nPort ); | 117 | onNewConnection( c, nPort ); |
117 | } | 118 | } |
118 | 119 | ||
120 | Bu::Server::SrvClientLink::SrvClientLink( Bu::Client *pClient ) : | ||
121 | pClient( pClient ) | ||
122 | { | ||
123 | } | ||
124 | |||
125 | Bu::Server::SrvClientLink::~SrvClientLink() | ||
126 | { | ||
127 | } | ||
128 | |||
129 | void Bu::Server::SrvClientLink::sendMsg( const Bu::FString &sMsg ) | ||
130 | { | ||
131 | pClient->onMessage( sMsg ); | ||
132 | } | ||
133 | |||
134 | Bu::Server::SrvClientLinkFactory::SrvClientLinkFactory() | ||
135 | { | ||
136 | } | ||
137 | |||
138 | Bu::Server::SrvClientLinkFactory::~SrvClientLinkFactory() | ||
139 | { | ||
140 | } | ||
141 | |||
142 | Bu::ClientLink *Bu::Server::SrvClientLinkFactory::createLink( | ||
143 | Bu::Client *pClient ) | ||
144 | { | ||
145 | return new SrvClientLink( pClient ); | ||
146 | } | ||
147 | |||
diff --git a/src/server.h b/src/server.h index 02f3546..1ba5fd7 100644 --- a/src/server.h +++ b/src/server.h | |||
@@ -13,6 +13,9 @@ | |||
13 | #include "bu/fstring.h" | 13 | #include "bu/fstring.h" |
14 | #include "bu/list.h" | 14 | #include "bu/list.h" |
15 | 15 | ||
16 | #include "bu/clientlink.h" | ||
17 | #include "bu/clientlinkfactory.h" | ||
18 | |||
16 | namespace Bu | 19 | namespace Bu |
17 | { | 20 | { |
18 | class ServerSocket; | 21 | class ServerSocket; |
@@ -58,6 +61,27 @@ namespace Bu | |||
58 | virtual void onClosedConnection( Client *pClient )=0; | 61 | virtual void onClosedConnection( Client *pClient )=0; |
59 | 62 | ||
60 | private: | 63 | private: |
64 | class SrvClientLink : public Bu::ClientLink | ||
65 | { | ||
66 | public: | ||
67 | SrvClientLink( Bu::Client *pClient ); | ||
68 | virtual ~SrvClientLink(); | ||
69 | |||
70 | virtual void sendMsg( const Bu::FString &sMsg ); | ||
71 | |||
72 | private: | ||
73 | Bu::Client *pClient; | ||
74 | }; | ||
75 | |||
76 | class SrvClientLinkFactory : public Bu::ClientLinkFactory | ||
77 | { | ||
78 | public: | ||
79 | SrvClientLinkFactory(); | ||
80 | virtual ~SrvClientLinkFactory(); | ||
81 | |||
82 | virtual Bu::ClientLink *createLink( Bu::Client *pClient ); | ||
83 | }; | ||
84 | |||
61 | int nTimeoutSec; | 85 | int nTimeoutSec; |
62 | int nTimeoutUSec; | 86 | int nTimeoutUSec; |
63 | fd_set fdActive; | 87 | fd_set fdActive; |
diff --git a/src/socket.cpp b/src/socket.cpp index 7b55c4b..94639b1 100644 --- a/src/socket.cpp +++ b/src/socket.cpp | |||
@@ -364,3 +364,7 @@ Bu::FString Bu::Socket::getAddress() const | |||
364 | return sAddress; | 364 | return sAddress; |
365 | } | 365 | } |
366 | 366 | ||
367 | Bu::Socket::operator int() const | ||
368 | { | ||
369 | return nSocket; | ||
370 | } | ||
diff --git a/src/socket.h b/src/socket.h index eee0be3..7acf055 100644 --- a/src/socket.h +++ b/src/socket.h | |||
@@ -57,6 +57,7 @@ namespace Bu | |||
57 | virtual void setBlocking( bool bBlocking=true ); | 57 | virtual void setBlocking( bool bBlocking=true ); |
58 | 58 | ||
59 | Bu::FString getAddress() const; | 59 | Bu::FString getAddress() const; |
60 | operator int() const; | ||
60 | 61 | ||
61 | private: | 62 | private: |
62 | void setAddress(); | 63 | void setAddress(); |