Пример #1
0
        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);
 }
Пример #4
0
        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);
        }
Пример #5
0
        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();
            }
        }
Пример #6
0
        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);
        }