]> git.saurik.com Git - wxWidgets.git/commitdiff
add accessors for sockaddr to wxSockAddress (closes #10511)
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 22 Feb 2009 23:38:07 +0000 (23:38 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 22 Feb 2009 23:38:07 +0000 (23:38 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59098 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/sckaddr.h
interface/wx/socket.h
src/common/sckaddr.cpp

index 28d1500cfd9f262590adcecbadff7c7c7e98655e..71ec921463c1233f68f64e1edf6527d38c5b5c69 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        sckaddr.h
+// Name:        wx/sckaddr.h
 // Purpose:     Network address classes
 // Author:      Guilhem Lavaux
 // Modified by:
 
 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
 class WXDLLIMPEXP_NET wxSockAddress : public wxObject
 {
@@ -41,6 +46,10 @@ public:
     virtual void Clear();
     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
     // (i.e. without knowing the exact address class)
     virtual wxSockAddress *Clone() const = 0;
index 0791ff4bb8c2363f63186a476d42908853f5577e..fa6cb923f90eb4a5b30b82121560fb2ced3775f4 100644 (file)
@@ -427,6 +427,26 @@ public:
         Returns the length of the socket address.
     */
     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;
 };
 
 
index 979d06853b08ad7ed9dffce1a539f1a537b458a9..b706132e5c7201b5a9808422b5539e5bb60f9114 100644 (file)
@@ -722,6 +722,16 @@ wxString wxSockAddressImpl::GetPath() const
 // wxSockAddress
 // ----------------------------------------------------------------------------
 
+const sockaddr *wxSockAddress::GetAddressData() const
+{
+    return GetAddress().GetAddr();
+}
+
+int wxSockAddress::GetAddressDataLen() const
+{
+    return GetAddress().GetLen();
+}
+
 void wxSockAddress::Init()
 {
     if ( !wxSocketBase::IsInitialized() )