Procházet zdrojové kódy

Fixed problems with sockets

Kenric Nugteren před 1 rokem
rodič
revize
8e32ffaf18

+ 13 - 7
InABox.Client.RPC/Transports/Socket/RPCClientSocketTransport.cs

@@ -18,7 +18,7 @@ namespace InABox.Rpc
         private ManualResetEventSlim openEvent = new ManualResetEventSlim();
 
         private string? _host;
-        //private bool _connected = false;
+        private bool _connected = false;
         
         private string[] _urls;
 
@@ -186,8 +186,13 @@ namespace InABox.Rpc
 
         private void Client_Closed(object sender, EventArgs e)
         {
+            var wasConnected = _connected;
+            _connected = false;
             openEvent.Set();
-            DoClose(RpcTransportCloseEventType.Closed);
+            if (wasConnected)
+            {
+                DoClose(RpcTransportCloseEventType.Closed);
+            }
         }
 
         private void Client_DataReceived(object sender, DataReceivedEventArgs e)
@@ -209,7 +214,7 @@ namespace InABox.Rpc
 
         private void Client_Opened(object sender, EventArgs e)
         {
-            //_connected = true;
+            _connected = true;
             DoOpen();
             openEvent.Set();
         }
@@ -221,7 +226,7 @@ namespace InABox.Rpc
                 openEvent.Reset();
                 _socket.Open();
                 openEvent.Wait(ct);
-                return IsConnected();
+                return _connected;
             }
             else
             {
@@ -248,6 +253,7 @@ namespace InABox.Rpc
                         }
 
                         _socket = result.Result;
+                        _connected = true;
 
                         /*Task.Run(() =>
                         {
@@ -260,17 +266,17 @@ namespace InABox.Rpc
                             }
                         });*/
 
-                        return IsConnected();
+                        return _connected;
                     }
                 }
-                return IsConnected();
+                return _connected;
             }
         }
 
         public override bool IsConnected() => _socket?.State == WebSocketState.Open;
         public override bool IsSecure() => _socket?.Security.Certificates.Count > 0;
 
-        public override string? ServerName() => _host;
+        public override String? ServerName() => _host;
         
         public override void Disconnect()
         {