#ifndef _XMLRPCSOCKET_H_ #define _XMLRPCSOCKET_H_ // // XmlRpc++ Copyright (c) 2002-2003 by Chris Morley // #if defined(_MSC_VER) # pragma warning(disable:4786) // identifier was truncated in debug info #endif #ifndef MAKEDEPEND # include <string> #endif namespace XmlRpc { //! A platform-independent socket API. class XmlRpcSocket { public: //! Creates a stream (TCP) socket. Returns -1 on failure. static int socket(); //! Closes a socket. static void close(int socket); //! Sets a stream (TCP) socket to perform non-blocking IO. Returns false on failure. static bool setNonBlocking(int socket); //! Read text from the specified socket. Returns false on error. static bool nbRead(int socket, std::string& s, bool *eof); //! Write text to the specified socket. Returns false on error. static bool nbWrite(int socket, std::string& s, int *bytesSoFar); // The next four methods are appropriate for servers. //! Allow the port the specified socket is bound to to be re-bound immediately so //! server re-starts are not delayed. Returns false on failure. static bool setReuseAddr(int socket); //! Bind to a specified port static bool bind(int socket, int port); //! Set socket in listen mode static bool listen(int socket, int backlog); //! Accept a client connection request static int accept(int socket); //! Connect a socket to a server (from a client) static bool connect(int socket, std::string& host, int port); //! Returns last errno static int getError(); //! Returns message corresponding to last error static std::string getErrorMsg(); //! Returns message corresponding to error static std::string getErrorMsg(int error); }; } // namespace XmlRpc #endif