move check for wxUSE_IPV6 being defined to wx/chkconf.h where it belongs; reformatted/indented socket addresses classes declarations without really changing them (to avoid having unrelated changes in the upcoming commits)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55933 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2008-09-28 17:24:09 +00:00
parent 29856611d2
commit 8ac36abb0f
2 changed files with 149 additions and 119 deletions

View File

@@ -129,6 +129,14 @@
# endif # endif
#endif /* !defined(wxUSE_INTL) */ #endif /* !defined(wxUSE_INTL) */
#ifndef wxUSE_IPV6
# ifdef wxABORT_ON_CONFIG_ERROR
# error "wxUSE_IPV6 must be defined."
# else
# define wxUSE_IPV6 0
# endif
#endif /* !defined(wxUSE_IPV6) */
#ifndef wxUSE_LOG #ifndef wxUSE_LOG
# ifdef wxABORT_ON_CONFIG_ERROR # ifdef wxABORT_ON_CONFIG_ERROR
# error "wxUSE_LOG must be defined." # error "wxUSE_LOG must be defined."

View File

@@ -9,187 +9,209 @@
// Licence: wxWindows licence // Licence: wxWindows licence
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
#ifndef _WX_NETWORK_ADDRESS_H #ifndef _WX_SCKADDR_H_
#define _WX_NETWORK_ADDRESS_H #define _WX_SCKADDR_H_
#include "wx/defs.h" #include "wx/defs.h"
#if wxUSE_SOCKETS #if wxUSE_SOCKETS
#include "wx/string.h" #include "wx/string.h"
#include "wx/gsocket.h" #include "wx/gsocket.h"
// Any socket address kind
class WXDLLIMPEXP_NET wxSockAddress : public wxObject { class WXDLLIMPEXP_NET wxSockAddress : public wxObject
DECLARE_ABSTRACT_CLASS(wxSockAddress) {
public: public:
typedef enum { IPV4=1, IPV6=2, UNIX=3 } Addr; enum
{
IPV4 = 1,
IPV6 = 2,
UNIX = 3
} Addr;
wxSockAddress(); wxSockAddress();
wxSockAddress(const wxSockAddress& other); wxSockAddress(const wxSockAddress& other);
virtual ~wxSockAddress(); virtual ~wxSockAddress();
wxSockAddress& operator=(const wxSockAddress& other); wxSockAddress& operator=(const wxSockAddress& other);
virtual void Clear(); virtual void Clear();
virtual int Type() = 0; virtual int Type() = 0;
GAddress *GetAddress() const { return m_address; } // we need to be able to create copies of the addresses polymorphically
void SetAddress(GAddress *address); // (i.e. without knowing the exact address class)
virtual wxSockAddress *Clone() const = 0;
// we need to be able to create copies of the addresses polymorphically (i.e.
// without knowing the exact address class) // implementation only, don't use
virtual wxSockAddress *Clone() const = 0; GAddress *GetAddress() const { return m_address; }
void SetAddress(GAddress *address);
protected: protected:
GAddress *m_address; GAddress *m_address;
private: private:
void Init(); void Init();
DECLARE_ABSTRACT_CLASS(wxSockAddress)
}; };
// Interface to an IP address (either IPV4 or IPV6) // An IP address (either IPv4 or IPv6)
class WXDLLIMPEXP_NET wxIPaddress : public wxSockAddress { class WXDLLIMPEXP_NET wxIPaddress : public wxSockAddress
DECLARE_ABSTRACT_CLASS(wxIPaddress) {
public: public:
wxIPaddress(); wxIPaddress();
wxIPaddress(const wxIPaddress& other); wxIPaddress(const wxIPaddress& other);
virtual ~wxIPaddress(); virtual ~wxIPaddress();
virtual bool Hostname(const wxString& name) = 0; virtual bool Hostname(const wxString& name) = 0;
virtual bool Service(const wxString& name) = 0; virtual bool Service(const wxString& name) = 0;
virtual bool Service(unsigned short port) = 0; virtual bool Service(unsigned short port) = 0;
virtual bool LocalHost() = 0; virtual bool LocalHost() = 0;
virtual bool IsLocalHost() const = 0; virtual bool IsLocalHost() const = 0;
virtual bool AnyAddress() = 0; virtual bool AnyAddress() = 0;
virtual bool BroadcastAddress() = 0; virtual bool BroadcastAddress() = 0;
virtual wxString IPAddress() const = 0; virtual wxString IPAddress() const = 0;
virtual wxString Hostname() const = 0; virtual wxString Hostname() const = 0;
virtual unsigned short Service() const = 0; virtual unsigned short Service() const = 0;
DECLARE_ABSTRACT_CLASS(wxIPaddress)
}; };
class WXDLLIMPEXP_NET wxIPV4address : public wxIPaddress { // An IPv4 address
DECLARE_DYNAMIC_CLASS(wxIPV4address) class WXDLLIMPEXP_NET wxIPV4address : public wxIPaddress
{
public: public:
wxIPV4address(); wxIPV4address();
wxIPV4address(const wxIPV4address& other); wxIPV4address(const wxIPV4address& other);
virtual ~wxIPV4address(); virtual ~wxIPV4address();
// IPV4 name formats bool operator==(const wxIPV4address& addr) const;
//
// hostname
// dot format a.b.c.d
virtual bool Hostname(const wxString& name);
bool Hostname(unsigned long addr);
virtual bool Service(const wxString& name);
virtual bool Service(unsigned short port);
// localhost (127.0.0.1) // implement wxSockAddress pure virtuals:
virtual bool LocalHost(); virtual int Type() { return wxSockAddress::IPV4; }
virtual bool IsLocalHost() const; virtual wxSockAddress *Clone() const;
// any (0.0.0.0)
virtual bool AnyAddress();
// all (255.255.255.255)
virtual bool BroadcastAddress();
virtual wxString Hostname() const; // implement wxIPaddress pure virtuals:
wxString OrigHostname() { return m_origHostname; }
virtual unsigned short Service() const;
// a.b.c.d // handles the usual dotted quad format too
virtual wxString IPAddress() const; virtual bool Hostname(const wxString& name);
virtual bool Service(const wxString& name);
virtual bool Service(unsigned short port);
virtual int Type() { return wxSockAddress::IPV4; } // localhost (127.0.0.1)
virtual wxSockAddress *Clone() const; virtual bool LocalHost();
virtual bool IsLocalHost() const;
bool operator==(const wxIPV4address& addr) const; // any (0.0.0.0)
virtual bool AnyAddress();
// all (255.255.255.255)
virtual bool BroadcastAddress();
// a.b.c.d
virtual wxString IPAddress() const;
virtual wxString Hostname() const;
virtual unsigned short Service() const;
// IPv4-specific methods:
bool Hostname(unsigned long addr);
wxString OrigHostname() { return m_origHostname; }
private: private:
wxString m_origHostname; wxString m_origHostname;
DECLARE_DYNAMIC_CLASS(wxIPV4address)
}; };
// the IPv6 code probably doesn't work, untested -- set to 1 at your own risk
#ifndef wxUSE_IPV6
#define wxUSE_IPV6 0
#endif
#if wxUSE_IPV6 #if wxUSE_IPV6
class WXDLLIMPEXP_NET wxIPV6address : public wxIPaddress { // An IPv6 address
DECLARE_DYNAMIC_CLASS(wxIPV6address) class WXDLLIMPEXP_NET wxIPV6address : public wxIPaddress
private: {
wxString m_origHostname;
public: public:
wxIPV6address(); wxIPV6address();
wxIPV6address(const wxIPV6address& other); wxIPV6address(const wxIPV6address& other);
virtual ~wxIPV6address(); virtual ~wxIPV6address();
// IPV6 name formats // implement wxSockAddress pure virtuals:
//
// hostname
// 3ffe:ffff:0100:f101:0210:a4ff:fee3:9566
// compact (base85) Itu&-ZQ82s>J%s99FJXT (depends on platform api)
// compressed format ::1
// ipv4 mapped ::ffff:1.2.3.4
virtual bool Hostname(const wxString& name);
bool Hostname(unsigned char addr[16]); virtual int Type() { return wxSockAddress::IPV6; }
virtual bool Service(const wxString& name); virtual wxSockAddress *Clone() const { return new wxIPV6address(*this); }
virtual bool Service(unsigned short port);
// localhost (0000:0000:0000:0000:0000:0000:0000:0001 (::1))
virtual bool LocalHost();
virtual bool IsLocalHost() const;
// any (0000:0000:0000:0000:0000:0000:0000:0000 (::)) // implement wxIPaddress pure virtuals:
virtual bool AnyAddress();
// all (?)
virtual bool BroadcastAddress();
// 3ffe:ffff:0100:f101:0210:a4ff:fee3:9566 virtual bool Hostname(const wxString& name);
virtual wxString IPAddress() const; virtual bool Service(const wxString& name);
virtual bool Service(unsigned short port);
virtual wxString Hostname() const; // localhost (0000:0000:0000:0000:0000:0000:0000:0001 (::1))
virtual unsigned short Service() const; virtual bool LocalHost();
virtual bool IsLocalHost() const;
virtual int Type() { return wxSockAddress::IPV6; } // any (0000:0000:0000:0000:0000:0000:0000:0000 (::))
virtual wxSockAddress *Clone() const { return new wxIPV6address(*this); } virtual bool AnyAddress();
// all (?)
virtual bool BroadcastAddress();
// 3ffe:ffff:0100:f101:0210:a4ff:fee3:9566
virtual wxString IPAddress() const;
virtual wxString Hostname() const;
virtual unsigned short Service() const;
// IPv6-specific methods:
bool Hostname(unsigned char addr[16]);
private:
wxString m_origHostname;
DECLARE_DYNAMIC_CLASS(wxIPV6address)
}; };
#endif // wxUSE_IPV6 #endif // wxUSE_IPV6
#if defined(__UNIX__) && !defined(__WINE__) && (!defined(__WXMAC__) || defined(__DARWIN__)) && !defined(__WXMSW__) #if defined(__UNIX__) && !defined(__WINE__)
#include <sys/socket.h> #include <sys/socket.h>
#ifndef __VMS__ #ifndef __VMS__
# include <sys/un.h> #include <sys/un.h>
#endif #endif
class WXDLLIMPEXP_NET wxUNIXaddress : public wxSockAddress { // A Unix domain socket address
DECLARE_DYNAMIC_CLASS(wxUNIXaddress) class WXDLLIMPEXP_NET wxUNIXaddress : public wxSockAddress
private: {
struct sockaddr_un *m_addr;
public: public:
wxUNIXaddress(); wxUNIXaddress();
wxUNIXaddress(const wxUNIXaddress& other); wxUNIXaddress(const wxUNIXaddress& other);
virtual ~wxUNIXaddress(); virtual ~wxUNIXaddress();
void Filename(const wxString& name); void Filename(const wxString& name);
wxString Filename(); wxString Filename();
virtual int Type() { return wxSockAddress::UNIX; } virtual int Type() { return wxSockAddress::UNIX; }
virtual wxSockAddress *Clone() const { return new wxUNIXaddress(*this); } virtual wxSockAddress *Clone() const { return new wxUNIXaddress(*this); }
private:
struct sockaddr_un *m_addr;
DECLARE_DYNAMIC_CLASS(wxUNIXaddress)
}; };
#endif
// __UNIX__
#endif #endif // __UNIX__
// wxUSE_SOCKETS
#endif #endif // wxUSE_SOCKETS
// _WX_NETWORK_ADDRESS_H
#endif // _WX_SCKADDR_H_