Home | History | Annotate | Download | only in src
      1 #ifndef _XMLRPCSOCKET_H_
      2 #define _XMLRPCSOCKET_H_
      3 //
      4 // XmlRpc++ Copyright (c) 2002-2003 by Chris Morley
      5 //
      6 #if defined(_MSC_VER)
      7 # pragma warning(disable:4786)    // identifier was truncated in debug info
      8 #endif
      9 
     10 #ifndef MAKEDEPEND
     11 # include <string>
     12 #endif
     13 
     14 namespace XmlRpc {
     15 
     16   //! A platform-independent socket API.
     17   class XmlRpcSocket {
     18   public:
     19 
     20     //! Creates a stream (TCP) socket. Returns -1 on failure.
     21     static int socket();
     22 
     23     //! Closes a socket.
     24     static void close(int socket);
     25 
     26 
     27     //! Sets a stream (TCP) socket to perform non-blocking IO. Returns false on failure.
     28     static bool setNonBlocking(int socket);
     29 
     30     //! Read text from the specified socket. Returns false on error.
     31     static bool nbRead(int socket, std::string& s, bool *eof);
     32 
     33     //! Write text to the specified socket. Returns false on error.
     34     static bool nbWrite(int socket, std::string& s, int *bytesSoFar);
     35 
     36 
     37     // The next four methods are appropriate for servers.
     38 
     39     //! Allow the port the specified socket is bound to to be re-bound immediately so
     40     //! server re-starts are not delayed. Returns false on failure.
     41     static bool setReuseAddr(int socket);
     42 
     43     //! Bind to a specified port
     44     static bool bind(int socket, int port);
     45 
     46     //! Set socket in listen mode
     47     static bool listen(int socket, int backlog);
     48 
     49     //! Accept a client connection request
     50     static int accept(int socket);
     51 
     52 
     53     //! Connect a socket to a server (from a client)
     54     static bool connect(int socket, std::string& host, int port);
     55 
     56 
     57     //! Returns last errno
     58     static int getError();
     59 
     60     //! Returns message corresponding to last error
     61     static std::string getErrorMsg();
     62 
     63     //! Returns message corresponding to error
     64     static std::string getErrorMsg(int error);
     65   };
     66 
     67 } // namespace XmlRpc
     68 
     69 #endif
     70