barrier/net/CNetworkAddress.h

49 lines
1.2 KiB
C++

#ifndef CNETWORKADDRESS_H
#define CNETWORKADDRESS_H
#include "CNetwork.h"
#include "XSocket.h"
#include "CString.h"
#include "BasicTypes.h"
class CNetworkAddress {
public:
// invalid address
CNetworkAddress();
// wildcard address and given port. port must not be zero.
CNetworkAddress(UInt16 port);
// given address and port. if hostname can be parsed as numerical
// address then that's how it's used, otherwise the hostname is
// looked up. if lookup fails then it throws XSocketAddress. if
// hostname ends in ":[0-9]+" then that suffix is extracted and
// used as the port, overridding the port parameter. neither
// port may be zero.
CNetworkAddress(const CString& hostname, UInt16 port);
~CNetworkAddress();
// manipulators
// accessors
// returns true if this is not the invalid address
bool isValid() const;
// get the address
const CNetwork::Address* getAddress() const;
CNetwork::AddressLength getAddressLength() const;
// get the hostname and port (as provided in the c'tor)
CString getHostname() const;
UInt16 getPort() const;
private:
CNetwork::Address m_address;
CString m_hostname;
UInt16 m_port;
};
#endif