diff options
author | Alan Conway <aconway@apache.org> | 2006-11-29 14:36:08 +0000 |
---|---|---|
committer | Alan Conway <aconway@apache.org> | 2006-11-29 14:36:08 +0000 |
commit | b13e1a24fcca8797b7be5a242f164afbe17ec4f6 (patch) | |
tree | ef0362e52c125bc75b07ef3e374dabfa52254e98 /cpp/src/qpid/sys/Socket.h | |
parent | 16d818e749462daf5e0e43079b2e48991646c619 (diff) | |
download | qpid-python-b13e1a24fcca8797b7be5a242f164afbe17ec4f6.tar.gz |
Posix EventChannel implementation using epoll. Placeholder for kevents.
Dynamic thread pool EventChannelThreads to serve EventChannel.
Misc cleanup/enhancements.
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk/qpid@480582 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src/qpid/sys/Socket.h')
-rw-r--r-- | cpp/src/qpid/sys/Socket.h | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/cpp/src/qpid/sys/Socket.h b/cpp/src/qpid/sys/Socket.h index cf757e7a27..d3e8c1af48 100644 --- a/cpp/src/qpid/sys/Socket.h +++ b/cpp/src/qpid/sys/Socket.h @@ -23,6 +23,7 @@ */ #include <string> +#include <qpid/sys/Time.h> #ifdef USE_APR # include <apr_network_io.h> @@ -34,10 +35,18 @@ namespace sys { class Socket { public: - Socket(); + /** Create an initialized TCP socket */ + static Socket createTcp(); + /** Create a socket wrapper for descriptor. */ +#ifdef USE_APR + Socket(apr_socket_t* descriptor = 0); +#else + Socket(int descriptor = 0); +#endif + /** Set timeout for read and write */ - void setTimeout(long msecs); + void setTimeout(Time interval); void connect(const std::string& host, int port); @@ -46,19 +55,30 @@ class Socket enum { SOCKET_TIMEOUT=-2, SOCKET_EOF=-3 } ErrorCode; /** Returns bytes sent or an ErrorCode value < 0. */ - ssize_t send(const char* data, size_t size); + ssize_t send(const void* data, size_t size); /** * Returns bytes received, an ErrorCode value < 0 or 0 * if the connection closed in an orderly manner. */ - ssize_t recv(char* data, size_t size); + ssize_t recv(void* data, size_t size); + + /** Bind to a port and start listening. + *@param port 0 means choose an available port. + *@param backlog maximum number of pending connections. + *@return The bound port. + */ + int listen(int port = 0, int backlog = 10); + /** Get file descriptor */ + int fd(); + private: #ifdef USE_APR apr_socket_t* socket; #else - int socket; + void init() const; + mutable int socket; // Initialized on demand. #endif }; |