예제 #1
0
 public void TestDidClose()
 {
     C4WebSocketCloseCode closeCode = C4WebSocketCloseCode.WebSocketCloseAbnormal;
     string reason = "Unexpected error in client logic";
     var    method = webSocketWrapper.GetType().GetMethods(BindingFlags.NonPublic | BindingFlags.Instance).Where(m => m.Name == "DidClose");
     //var res = method.ElementAt(0).Invoke(webSocketWrapper, new object[2] { closeCode, reason });
 }
        private unsafe void DidClose(C4WebSocketCloseCode closeCode, string reason)
        {
            if (closeCode == C4WebSocketCloseCode.WebSocketCloseNormal)
            {
                DidClose(null);
                return;
            }

            ResetConnections();

            Log.To.Sync.I(Tag, $"WebSocket CLOSED WITH STATUS {closeCode} \"{reason}\"");
            var c4Err = Native.c4error_make(C4ErrorDomain.WebSocketDomain, (int)closeCode, reason);

            _c4Queue.DispatchAsync(() =>
            {
                if (_closed)
                {
                    Log.To.Sync.W(Tag, "Double close detected, ignoring...");
                    return;
                }

                Native.c4socket_closed(_socket, c4Err);
                _closed = true;
            });
        }
예제 #3
0
        private unsafe void DidClose(C4WebSocketCloseCode closeCode, string reason)
        {
            if (closeCode == C4WebSocketCloseCode.WebSocketCloseNormal)
            {
                DidClose(null);
                return;
            }

            if (NetworkStream == null)
            {
                return;
            }

            ResetConnections();

            Log.To.Sync.I(Tag, $"WebSocket CLOSED WITH STATUS {closeCode} \"{reason}\"");
            var c4Err = Native.c4error_make(C4ErrorDomain.WebSocketDomain, (int)closeCode, reason);

            _c4Queue.DispatchAsync(() => Native.c4socket_closed(_socket, c4Err));
        }