# address.h

Go to the documentation of this file.

    00001 /* $Id: address.h 15903 2009-03-30 23:15:05Z rubidium $ */
    00002
    00005 #ifndef NETWORK_ADDRESS_H
    00006 #define NETWORK_ADDRESS_H
    00007
    00008 #ifdef ENABLE_NETWORK
    00009
    00010 #include "os_abstraction.h"
    00011
    00017 class NetworkAddress {
    00018 private:
    00019   bool resolved;
    00020   char *hostname;
    00021   uint32 ip;
    00022   uint16 port;
    00023
    00024 public:
    00030   NetworkAddress(in_addr_t ip, uint16 port) :
    00031     resolved(true),
    00032     hostname(NULL),
    00033     ip(ip),
    00034     port(port)
    00035   {
    00036   }
    00037
    00043   NetworkAddress(const char *hostname, uint16 port) :
    00044     resolved(false),
    00045     hostname(strdup(hostname)),
    00046     ip(0),
    00047     port(port)
    00048   {
    00049   }
    00050
    00055   NetworkAddress(const NetworkAddress &address) :
    00056     resolved(address.resolved),
    00057     hostname(address.hostname == NULL ? NULL : strdup(address.hostname)),
    00058     ip(address.ip),
    00059     port(address.port)
    00060   {
    00061   }
    00062
    00064   ~NetworkAddress()
    00065   {
    00066     free(hostname);
    00067   }
    00068
    00074   const char *GetHostname() const;
    00075
    00081   uint32 GetIP();
    00082
    00087   uint16 GetPort() const
    00088   {
    00089     return this->port;
    00090   }
    00091
    00096   bool IsResolved() const
    00097   {
    00098     return this->resolved;
    00099   }
    00100 };
    00101
    00102 #endif /* ENABLE_NETWORK */
    00103 #endif /* NETWORK_ADDRESS_H */