public static async Task MainAsync() { var stopEvent = new ManualResetEvent(false); Log.Info($"+ Starting test server"); var cts = new CancellationTokenSource(); var config = new ServerConfig(); using (var server = new PlayListener(config)) { var servierAsyncTask = server.StartServer(cts.Token); var clients = new List <Task>(); /* Task.Run(() => * { * System.Console.ReadLine(); * Log.Debug("Stopping server"); * stopEvent.Set(); * });*/ for (int i = 0; i < 22; i++) { var i1 = i; clients.Add(Task.Run(() => { Log.Info($"Client {i1} connecting to server."); using (var client = new TcpClient()) { client.Connect("127.0.0.1", config.Port); var request = Encoding.ASCII.GetBytes($"send to client from {i1}"); var response = new byte[1024]; using (var stream = client.GetStream()) { stream.Write(request, 0, request.Length); stream.Read(response, 0, response.Length); } } })); } Task.WaitAll(clients.ToArray(), TimeSpan.FromSeconds(10)); // then continue to wait on server task servierAsyncTask.GetAwaiter().GetResult(); } }
public void Stop() { if (playCoroutine == null) { return; } StopCoroutine(playCoroutine); if (playListener != null && playListener.endAction != null) { playListener.endAction.Invoke(); } playListener = null; playCoroutine = null; }
public void Play(SpriteAnimation animation, int count, Action endAction) { if (count <= 0) { throw new Exception($"Count parameter is invalid"); } if (playCoroutine != null) { Stop(); } playListener = new PlayListener(); playListener.count = count; playListener.targetAnimation = animation; playListener.endAction = endAction; playCount = 0; playIndex = 0; playCoroutine = CoPlay(); StartCoroutine(playCoroutine); }
public static void main(String[] args) { PlayListener l1 = new PlayListener(); PlayListener l2 = new PlayListener(); PlayListener l3 = new PlayListener(); PlayListener l4 = new PlayListener(); PlayListener l5 = new PlayListener(); TimerReference reference = HystrixTimer.Instance.AddTimerListener(l1); HystrixTimer.Instance.AddTimerListener(l2); HystrixTimer.Instance.AddTimerListener(l3); HystrixTimer.Instance.AddTimerListener(l4); try { Thread.Sleep(5000); } catch (ThreadInterruptedException e) { Console.WriteLine(e.ToString()); } reference.Clear(); HystrixTimer.Instance.AddTimerListener(l5); try { Thread.Sleep(10000); } catch (ThreadInterruptedException e) { Console.WriteLine(e.ToString()); } Console.WriteLine("counter: " + l1.Counter); Console.WriteLine("counter: " + l2.Counter); Console.WriteLine("counter: " + l3.Counter); Console.WriteLine("counter: " + l4.Counter); Console.WriteLine("counter: " + l5.Counter); }
public void Listener_ManyClientsConnected_ShouldBeOk() { var cts = new CancellationTokenSource(); var config = new ServerConfig(); using (var server = new PlayListener(config)) { var servierAsyncTask = server.StartServer(cts.Token); var clients = new List <Task>(); for (int i = 0; i < 10; i++) { clients.Add(Task.Run(() => { using (var client = new TcpClient()) { client.Connect("127.0.0.1", config.Port); var request = Encoding.ASCII.GetBytes($"send to client from {client.ToString()}"); var response = new byte[1024]; using (var stream = client.GetStream()) { stream.Write(request, 0, request.Length); stream.Read(response, 0, response.Length); } } })); } Task.WaitAll(clients.ToArray(), TimeSpan.FromSeconds(10)); // then continue to wait on server task servierAsyncTask.GetAwaiter().GetResult(); } }