Example #1
0
        public InputWsServer(int port, IInputSink sink)
        {
            _lock = new object();
            _sink = sink;
            _sink.AddStateListener(OnUpdate);
            _userQueue       = new ConcurrentQueue <TwitchUser>();
            _queuedUsers     = new HashSet <TwitchUser>();
            _listenerClients = new ConcurrentDictionary <WebSocketBehavior, bool>();

            _turnExpirationTimer = new Timer(timeout)
            {
                AutoReset = false,
                Enabled   = false,
            };
            _turnExpirationTimer.Elapsed += (sender, e) => OnNextTurn();

            _server = new HttpServer(port);
            _server.AddWebSocketService(ServicePath, () =>
            {
                var client = new InputWsClient
                {
                    InputCallback           = OnInputFrame,
                    TurnRequestCallback     = OnTurnRequest,
                    TurnCancelCallback      = OnTurnCancel,
                    OnNewConnectionCallback = OnNewConnection,
                    OnListenerAddedCallback = OnNewListener
                };
                return(client);
            });
        }
Example #2
0
 public void PushInput(IInputSink input)
 {
     Trace.Assert(!m_inputStack.Contains(input));
     if (m_inputStack.Count > 0)
     {
         m_inputStack[m_inputStack.Count - 1].OnInputRelease();
     }
     m_inputStack.Add(input);
     input.OnInputAcquire();
 }
Example #3
0
 public static void PushInput(IInputSink input)
 {
     Trace.Assert(!Editor.m_inputStack.Contains(input));
     if (Editor.m_inputStack.Count > 0)
     {
         Editor.m_inputStack[Editor.m_inputStack.Count - 1].OnInputRelease();
     }
     Editor.m_inputStack.Add(input);
     input.OnInputAcquire();
 }
Example #4
0
        public void PopInput(IInputSink input)
        {
            int num = m_inputStack.LastIndexOf(input);

            if (num == -1)
            {
                return;
            }
            m_inputStack[m_inputStack.Count - 1].OnInputRelease();
            m_inputStack.RemoveRange(num, m_inputStack.Count - num);
            if (m_inputStack.Count > 0)
            {
                m_inputStack[m_inputStack.Count - 1].OnInputAcquire();
            }
        }
Example #5
0
        public static void PopInput(IInputSink input)
        {
            int num = Editor.m_inputStack.LastIndexOf(input);

            if (num == -1)
            {
                return;
            }
            Editor.m_inputStack[Editor.m_inputStack.Count - 1].OnInputRelease();
            Editor.m_inputStack.RemoveRange(num, Editor.m_inputStack.Count - num);
            if (Editor.m_inputStack.Count > 0)
            {
                Editor.m_inputStack[Editor.m_inputStack.Count - 1].OnInputAcquire();
            }
        }
Example #6
0
 public static void PushInput(IInputSink input)
 {
     Trace.Assert(!Editor.m_inputStack.Contains(input));
     if (Editor.m_inputStack.Count > 0)
     {
         Editor.m_inputStack[Editor.m_inputStack.Count - 1].OnInputRelease();
     }
     Editor.m_inputStack.Add(input);
     input.OnInputAcquire();
 }
Example #7
0
 public static void PopInput(IInputSink input)
 {
     int num = Editor.m_inputStack.LastIndexOf(input);
     if (num == -1)
     {
         return;
     }
     Editor.m_inputStack[Editor.m_inputStack.Count - 1].OnInputRelease();
     Editor.m_inputStack.RemoveRange(num, Editor.m_inputStack.Count - num);
     if (Editor.m_inputStack.Count > 0)
     {
         Editor.m_inputStack[Editor.m_inputStack.Count - 1].OnInputAcquire();
     }
 }
 public void Subscribe2 <T>(IInputSink <T> sink) where T : EventArgs
 {
     _inputSinks[typeof(T)] = sink;
 }
Example #9
0
 public static void PushInput(IInputSink input)
 {
     System.Diagnostics.Trace.Assert(!m_inputStack.Contains(input));
     if (m_inputStack.Count > 0)
     {
     m_inputStack[m_inputStack.Count - 1].OnInputRelease();
     }
     m_inputStack.Add(input);
     input.OnInputAcquire();
 }
Example #10
0
 public static void PopInput(IInputSink input)
 {
     int index = m_inputStack.LastIndexOf(input);
     if (index != -1)
     {
     m_inputStack[m_inputStack.Count - 1].OnInputRelease();
     m_inputStack.RemoveRange(index, m_inputStack.Count - index);
     if (m_inputStack.Count > 0)
     {
         m_inputStack[m_inputStack.Count - 1].OnInputAcquire();
     }
     }
 }
Example #11
0
 public void PopInput(IInputSink input)
 {
     int num = m_inputStack.LastIndexOf(input);
     if (num == -1)
     {
         return;
     }
     m_inputStack[m_inputStack.Count - 1].OnInputRelease();
     m_inputStack.RemoveRange(num, m_inputStack.Count - num);
     if (m_inputStack.Count > 0)
     {
         m_inputStack[m_inputStack.Count - 1].OnInputAcquire();
     }
 }