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); }); }
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(); }
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(); }
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(); } }
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; }
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(); }
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(); } } }