mirror of
https://github.com/debauchee/barrier.git
synced 2024-11-28 14:07:17 +03:00
fee4095624
synergy.cpp and server.cpp into cmd/synergyd as synergyd.cpp. Moved and renamed related files. Moved remaining source files into lib/.... Modified and added makefiles as appropriate. Result is that library files are under lib with each library in its own directory and program files are under cmd with each command in its own directory.
110 lines
2.2 KiB
C++
110 lines
2.2 KiB
C++
#ifndef XSOCKET_H
|
|
#define XSOCKET_H
|
|
|
|
#include "XBase.h"
|
|
#include "CString.h"
|
|
#include "BasicTypes.h"
|
|
|
|
//! Generic socket exception
|
|
class XSocket : public XBase { };
|
|
|
|
//! Socket bad address exception
|
|
/*!
|
|
Thrown when attempting to create an invalid network address.
|
|
*/
|
|
class XSocketAddress : public XSocket {
|
|
public:
|
|
//! Failure codes
|
|
enum EError {
|
|
kUnknown, //!< Unknown error
|
|
kNotFound, //!< The hostname is unknown
|
|
kNoAddress, //!< The hostname is valid but has no IP address
|
|
kBadPort //!< The port is invalid
|
|
};
|
|
|
|
XSocketAddress(EError, const CString& hostname, UInt16 port) throw();
|
|
|
|
//! @name accessors
|
|
//@{
|
|
|
|
//! Get the error code
|
|
EError getError() const throw();
|
|
//! Get the hostname
|
|
CString getHostname() const throw();
|
|
//! Get the port
|
|
UInt16 getPort() const throw();
|
|
|
|
//@}
|
|
|
|
protected:
|
|
// XBase overrides
|
|
virtual CString getWhat() const throw();
|
|
|
|
private:
|
|
EError m_error;
|
|
CString m_hostname;
|
|
UInt16 m_port;
|
|
};
|
|
|
|
//! Generic socket exception using \c errno
|
|
class XSocketErrno : public XSocket, public MXErrno {
|
|
public:
|
|
XSocketErrno();
|
|
XSocketErrno(int);
|
|
};
|
|
|
|
//! Socket cannot bind address exception
|
|
/*!
|
|
Thrown when a socket cannot be bound to an address.
|
|
*/
|
|
class XSocketBind : public XSocketErrno {
|
|
public:
|
|
XSocketBind() { }
|
|
XSocketBind(int e) : XSocketErrno(e) { }
|
|
|
|
protected:
|
|
// XBase overrides
|
|
virtual CString getWhat() const throw();
|
|
};
|
|
|
|
//! Socket address in use exception
|
|
/*!
|
|
Thrown when a socket cannot be bound to an address because the address
|
|
is already in use.
|
|
*/
|
|
class XSocketAddressInUse : public XSocketBind {
|
|
public:
|
|
XSocketAddressInUse() { }
|
|
XSocketAddressInUse(int e) : XSocketBind(e) { }
|
|
};
|
|
|
|
//! Cannot connect socket exception
|
|
/*!
|
|
Thrown when a socket cannot connect to a remote endpoint.
|
|
*/
|
|
class XSocketConnect : public XSocketErrno {
|
|
public:
|
|
XSocketConnect() { }
|
|
XSocketConnect(int e) : XSocketErrno(e) { }
|
|
|
|
protected:
|
|
// XBase overrides
|
|
virtual CString getWhat() const throw();
|
|
};
|
|
|
|
//! Cannot create socket exception
|
|
/*!
|
|
Thrown when a socket cannot be created (by the operating system).
|
|
*/
|
|
class XSocketCreate : public XSocketErrno {
|
|
public:
|
|
XSocketCreate() { }
|
|
XSocketCreate(int e) : XSocketErrno(e) { }
|
|
|
|
protected:
|
|
// XBase overrides
|
|
virtual CString getWhat() const throw();
|
|
};
|
|
|
|
#endif
|