add accessors for sockaddr to wxSockAddress (closes #10511)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59098 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2009-02-22 23:38:07 +00:00
parent 70412bd46c
commit 5fab0c8d86
3 changed files with 40 additions and 1 deletions

View File

@@ -1,5 +1,5 @@
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// Name: sckaddr.h // Name: wx/sckaddr.h
// Purpose: Network address classes // Purpose: Network address classes
// Author: Guilhem Lavaux // Author: Guilhem Lavaux
// Modified by: // Modified by:
@@ -20,6 +20,11 @@
class wxSockAddressImpl; class wxSockAddressImpl;
// forward declare it instead of including the system headers defining it which
// can bring in <windows.h> under Windows which we don't want to include from
// public wx headers
struct sockaddr;
// Any socket address kind // Any socket address kind
class WXDLLIMPEXP_NET wxSockAddress : public wxObject class WXDLLIMPEXP_NET wxSockAddress : public wxObject
{ {
@@ -41,6 +46,10 @@ public:
virtual void Clear(); virtual void Clear();
virtual Family Type() = 0; virtual Family Type() = 0;
// accessors for the low level address represented by this object
const sockaddr *GetAddressData() const;
int GetAddressDataLen() const;
// we need to be able to create copies of the addresses polymorphically // we need to be able to create copies of the addresses polymorphically
// (i.e. without knowing the exact address class) // (i.e. without knowing the exact address class)
virtual wxSockAddress *Clone() const = 0; virtual wxSockAddress *Clone() const = 0;

View File

@@ -427,6 +427,26 @@ public:
Returns the length of the socket address. Returns the length of the socket address.
*/ */
int SockAddrLen(); int SockAddrLen();
/**
Returns the pointer to the low-level representation of the address.
This can be used to pass socket address information to a 3rd party
library.
@return
Pointer to a sockaddr-derived struct.
*/
const sockaddr *GetAddressData() const;
/**
Returns the length of the buffer retrieved by GetAddressData().
@return
The size of the sockaddr-derived struct corresponding to this
address.
*/
int GetAddressDataLen() const;
}; };

View File

@@ -722,6 +722,16 @@ wxString wxSockAddressImpl::GetPath() const
// wxSockAddress // wxSockAddress
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
const sockaddr *wxSockAddress::GetAddressData() const
{
return GetAddress().GetAddr();
}
int wxSockAddress::GetAddressDataLen() const
{
return GetAddress().GetLen();
}
void wxSockAddress::Init() void wxSockAddress::Init()
{ {
if ( !wxSocketBase::IsInitialized() ) if ( !wxSocketBase::IsInitialized() )