70 lines
1.8 KiB
C++
70 lines
1.8 KiB
C++
#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
|