[System] Implements Socket::ConnectAsync. Fixes #44406
authorMarek Safar <marek.safar@gmail.com>
Tue, 18 Oct 2016 15:12:54 +0000 (17:12 +0200)
committerMarek Safar <marek.safar@gmail.com>
Tue, 18 Oct 2016 15:14:59 +0000 (17:14 +0200)
mcs/class/System/System.Net.Sockets/Socket.cs
mcs/class/System/System.Net.Sockets/SocketAsyncEventArgs.cs
mcs/class/System/System.dll.sources
mcs/class/referencesource/System/net/System/Net/Sockets/Socket.cs

index 1feee9dedea869ebbffb84bd2bbe9fe1d946806f..ceb1958c6c890650834747c3b4361fb6d40672d9 100644 (file)
@@ -922,12 +922,6 @@ namespace System.Net.Sockets
                        return true;
                }
 
-               public static bool ConnectAsync (SocketType socketType, ProtocolType protocolType, SocketAsyncEventArgs e)
-               {
-                       var sock = new Socket (e.RemoteEndPoint.AddressFamily, socketType, protocolType);
-                       return sock.ConnectAsync (e);
-               }
-
                public static void CancelConnectAsync (SocketAsyncEventArgs e)
                {
                        if (e == null)
index e057021f9a73ce49e43049df46a8ac68b4cab9f9..419035efe15fe3ad31aac61aa2ba427ccc397620 100644 (file)
@@ -61,13 +61,13 @@ namespace System.Net.Sockets
                        private set;
                }
 
-               IList <ArraySegment <byte>> _bufferList;
+               internal IList<ArraySegment<byte>> m_BufferList;
                public IList<ArraySegment<byte>> BufferList {
-                       get { return _bufferList; }
+                       get { return m_BufferList; }
                        set {
                                if (Buffer != null && value != null)
                                        throw new ArgumentException ("Buffer and BufferList properties cannot both be non-null.");
-                               _bufferList = value;
+                               m_BufferList = value;
                        }
                }
 
@@ -234,5 +234,43 @@ namespace System.Net.Sockets
 
                        Buffer = buffer;
                }
+
+               internal void StartOperationCommon (Socket socket)
+               {
+                       current_socket = socket;
+               }
+
+               internal void StartOperationWrapperConnect (MultipleConnectAsync args)
+               {
+                       SetLastOperation (SocketAsyncOperation.Connect);
+
+                       //m_MultipleConnect = args;
+               }
+
+               internal void FinishConnectByNameSyncFailure (Exception exception, int bytesTransferred, SocketFlags flags)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               internal void FinishOperationAsyncFailure (Exception exception, int bytesTransferred, SocketFlags flags)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               internal void FinishWrapperConnectSuccess (Socket connectSocket, int bytesTransferred, SocketFlags flags)
+               {
+                       SetResults(SocketError.Success, bytesTransferred, flags);
+                       current_socket = connectSocket;
+
+                       Complete ();
+                       OnCompleted (this);
+               }
+
+               internal void SetResults (SocketError socketError, int bytesTransferred, SocketFlags flags)
+               {
+                       SocketError = socketError;
+                       BytesTransferred = bytesTransferred;
+                       SocketFlags = flags;
+               }
        }
 }
index a2128834812f8a7f1b346c9508abb42722192359..ffb1bec695ae250a93af7939f9ed3cc7ef3a5527 100644 (file)
@@ -1048,6 +1048,7 @@ ReferenceSources/Win32Exception.cs
 
 ../referencesource/System/net/System/Net/Configuration/DefaultProxySection.cs
 
+../referencesource/System/net/System/Net/Sockets/_MultipleConnectAsync.cs
 ../referencesource/System/net/System/Net/Sockets/AddressFamily.cs
 ../referencesource/System/net/System/Net/Sockets/IOControlCode.cs
 ../referencesource/System/net/System/Net/Sockets/IPPacketInformation.cs
index 985b7d22fa0144f2263abfd345b7e55c3ceea691..16169a1b7a530a37fbfe7665dd326b55a15ae5de 100644 (file)
@@ -7841,6 +7841,7 @@ namespace System.Net.Sockets {
             return retval;
         }
 
+#endif // MONO
         public static bool ConnectAsync(SocketType socketType, ProtocolType protocolType, SocketAsyncEventArgs e) {
 
             bool retval;
@@ -7883,6 +7884,7 @@ namespace System.Net.Sockets {
             return retval;
         }
 
+#if !MONO
         public static void CancelConnectAsync(SocketAsyncEventArgs e) {
 
             if (e == null) {