socket_data.h
Go to the documentation of this file.00001 #ifndef SOCKET_DATA_CLASS
00002 #define SOCKET_DATA_CLASS
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <basis/astring.h>
00025 #include <basis/byte_array.h>
00026 #include <basis/astring.h>
00027 #include <timely/time_stamp.h>
00028
00029 namespace sockets {
00030
00031 class socket_data
00032 {
00033 public:
00034 int _socket;
00035 basis::byte_array _partially_sent;
00036 basis::byte_array _partially_received;
00037 basis::byte_array _receive_buffer;
00038 bool _is_server;
00039 int _registered_interests;
00040
00041
00042 bool _connection_pending;
00043
00044
00045
00046 int _server_socket;
00047 bool _connected_mode;
00048 timely::time_stamp _last_conn_alert;
00049
00050
00051 socket_data(int socket = 0, bool server = true, int server_socket = 0,
00052 bool connected_mode = true)
00053 : _socket(socket), _is_server(server), _registered_interests(0),
00054 _connection_pending(true), _server_socket(server_socket),
00055 _connected_mode(connected_mode) {}
00056 ~socket_data() {}
00057
00058 bool server() const { return _is_server; }
00059 bool client() const { return !_is_server; }
00060
00061 basis::astring text_form() const;
00062
00063 };
00064
00066
00067
00068
00069 basis::astring socket_data::text_form() const
00070 {
00071 return basis::a_sprintf("socket=%d, type=%s, send_pend=%d, recv_pend=%d, "
00072 "interests=%s, conn_pending=%s",
00073 _socket, _is_server? "server":"client", _partially_sent.length(),
00074 _partially_received.length(),
00075 raw_socket::interest_name(_registered_interests).s(),
00076 _connection_pending? "true":"false");
00077 }
00078
00079 }
00080
00081 #endif
00082