AsyncTcpServer.h
Go to the documentation of this file.00001
00034 #ifndef ASYNC_TCP_SERVER_INCLUDED
00035 #define ASYNC_TCP_SERVER_INCLUDED
00036
00037
00038
00039
00040
00041
00042
00043
00044 #include <string>
00045 #include <vector>
00046 #include <sigc++/sigc++.h>
00047
00048
00049
00050
00051
00052
00053
00054
00055 #include <AsyncTcpConnection.h>
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075
00076
00077
00078
00079
00080 namespace Async
00081 {
00082
00083
00084
00085
00086
00087
00088
00089 class FdWatch;
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00126 class TcpServer : public SigC::Object
00127 {
00128 public:
00133 TcpServer(const std::string& port_str);
00134
00138 ~TcpServer(void);
00139
00144 int numberOfClients(void);
00145
00151 TcpConnection *getClient(unsigned int index);
00152
00159 int writeAll(const void *buf, int count);
00160
00168 int writeOnly(TcpConnection *con, const void *buf, int count);
00169
00177 int writeExcept(TcpConnection *con, const void *buf, int count);
00178
00183 SigC::Signal1<void, TcpConnection *> clientConnected;
00184
00190 SigC::Signal2<void, TcpConnection *,TcpConnection::DisconnectReason>
00191 clientDisconnected;
00192
00193
00194 protected:
00195
00196 private:
00197 typedef std::vector<TcpConnection*> TcpConnectionList;
00198
00199 int sock;
00200 FdWatch *rd_watch;
00201 TcpConnectionList tcpConnectionList;
00202
00203 void cleanup(void);
00204 void onConnection(FdWatch *watch);
00205 void onDisconnected(TcpConnection *con,
00206 TcpConnection::DisconnectReason reason);
00207
00208 };
00209
00210
00211 }
00212
00213 #endif
00214
00215
00216
00217
00218
00219
00220
00221
00222