示例#1
0
        public void SetUp()
        {
            ep = new IPEndPoint(IPAddress.Loopback, Config.Port);

            wh = new ManualResetEventSlim();

            schedulerDelegate = new SchedulerDelegate();
            scheduler         = new DefaultKayakScheduler(schedulerDelegate);

            schedulerDelegate.OnStoppedAction = () =>
            {
                stopListening.Dispose();
                stopListening = null;
                wh.Set();
            };
            schedulerDelegate.OnExceptionAction = e =>
            {
                schedulerError = e;
                Debug.WriteLine("Error on scheduler");
                e.DebugStackTrace();
                scheduler.Stop();
            };

            scheduler.Post(() =>
            {
                stopListening = server.Listen(ep);
                schedulerStartedAction();
            });

            serverDelegate = new ServerDelegate();
            server         = new DefaultKayakServer(serverDelegate, scheduler);

            clientSocketDelegate = new SocketDelegate();
            client = new DefaultKayakSocket(clientSocketDelegate, scheduler);
        }
示例#2
0
        public void Server_writes_asynchronously_client_buffers_synchronously()
        {
            serverDelegate.OnConnectionAction = (server, socket) =>
            {
                serverSocketDelegate = new SocketDelegate();

                serverSocketDelegate.OnCloseAction = () =>
                {
                    Debug.WriteLine("will dispose");
                    socket.Dispose();
                    Debug.WriteLine("did dispose");
                    scheduler.Stop();
                };

                WriteDataSync(socket);

                return(serverSocketDelegate);
            };

            schedulerStartedAction = () =>
            {
                clientSocketDelegate.OnEndAction = () =>
                {
                    client.End();
                };

                client.Connect(ep);
            };

            RunScheduler();

            AssertConnectionAndCleanShutdown();
            Assert.That(clientSocketDelegate.Buffer.GetString(),
                        Is.EqualTo("hailey is a stinky punky butt nugget dot com"));
        }
示例#3
0
        public void Client_writes_synchronously_server_buffers_synchronously()
        {
            serverDelegate.OnConnectionAction = (server, socket) =>
            {
                Debug.WriteLine("server OnConnection");
                serverSocketDelegate = new SocketDelegate();

                serverSocketDelegate.OnEndAction = () =>
                {
                    Debug.WriteLine("serverSocket OnEnd");
                    socket.End();
                };

                serverSocketDelegate.OnCloseAction = () =>
                {
                    Debug.WriteLine("serverSocket OnClose");
                    socket.Dispose();
                };

                return(serverSocketDelegate);
            };

            schedulerStartedAction = () =>
            {
                clientSocketDelegate.OnConnectedAction = () =>
                {
                    Debug.WriteLine("client OnConnected");
                    try
                    {
                        WriteDataSync(client);
                    }
                    catch (Exception e)
                    {
                        Console.Error.WriteStackTrace(e);
                    }
                };

                clientSocketDelegate.OnCloseAction = () =>
                {
                    Debug.WriteLine("client OnClose");
                    scheduler.Stop();
                };

                client.Connect(ep);
            };

            RunScheduler();

            AssertConnectionAndCleanShutdown();
            Assert.That(
                serverSocketDelegate.Buffer.GetString(),
                Is.EqualTo("hailey is a stinky punky butt nugget dot com"));
        }
示例#4
0
        public void Client_writes_asynchronously_server_buffers_synchronously()
        {
            serverDelegate.OnConnectionAction = (server, socket) =>
            {
                serverSocketDelegate = new SocketDelegate();

                serverSocketDelegate.OnEndAction = () =>
                {
                    socket.End();
                };

                serverSocketDelegate.OnCloseAction = () =>
                {
                    socket.Dispose();
                };

                return serverSocketDelegate;
            };

            schedulerStartedAction = () =>
            {
                clientSocketDelegate.OnConnectedAction = () =>
                {
                    try
                    {
                        WriteDataAsync(client);
                    }
                    catch (Exception e)
                    {
                        Console.Error.WriteStackTrace(e);
                    }
                };

                clientSocketDelegate.OnCloseAction = () =>
                {
                    scheduler.Stop();
                };

                client.Connect(ep);
            };

            RunScheduler();

            AssertConnectionAndCleanShutdown();
            Assert.That(serverSocketDelegate.Buffer.GetString(),
                Is.EqualTo("hailey is a stinky punky butt nugget dot com"));
        }
示例#5
0
        public void Simple_handshake_client_closes_connection()
        {
            serverDelegate.OnConnectionAction = (server, socket) =>
            {
                Debug.WriteLine("server OnConnection");
                serverSocketDelegate = new SocketDelegate();

                serverSocketDelegate.OnEndAction = () =>
                {
                    Debug.WriteLine("serverSocket OnEnd");
                    socket.End();
                };

                serverSocketDelegate.OnCloseAction = () =>
                {
                    Debug.WriteLine("serverSocket OnClose");
                    socket.Dispose();
                };

                return(serverSocketDelegate);
            };

            schedulerStartedAction = () =>
            {
                clientSocketDelegate.OnConnectedAction = () =>
                {
                    Debug.WriteLine("client End");
                    client.End();
                };
                clientSocketDelegate.OnCloseAction = () =>
                {
                    Debug.WriteLine("client OnClose");
                    scheduler.Stop();
                };

                client.Connect(ep);
            };

            RunScheduler();

            AssertConnectionAndCleanShutdown();
        }
示例#6
0
        public void Simple_handshake_client_closes_connection()
        {
            serverDelegate.OnConnectionAction = (server, socket) =>
            {
                Debug.WriteLine("server OnConnection");
                serverSocketDelegate = new SocketDelegate();

                serverSocketDelegate.OnEndAction = () =>
                {
                    Debug.WriteLine("serverSocket OnEnd");
                    socket.End();
                };

                serverSocketDelegate.OnCloseAction = () =>
                {
                    Debug.WriteLine("serverSocket OnClose");
                    socket.Dispose();
                };

                return serverSocketDelegate;
            };

            schedulerStartedAction = () =>
            {
                clientSocketDelegate.OnConnectedAction = () =>
                {
                    Debug.WriteLine("client End");
                    client.End();
                };
                clientSocketDelegate.OnCloseAction = () =>
                {
                    Debug.WriteLine("client OnClose");
                    scheduler.Stop();
                };

                client.Connect(ep);
            };

            RunScheduler();

            AssertConnectionAndCleanShutdown();
        }
示例#7
0
        public void SetUp()
        {
            ep = new IPEndPoint(IPAddress.Loopback, Config.Port);

            wh = new ManualResetEventSlim();

            schedulerDelegate = new SchedulerDelegate();
            scheduler = new DefaultKayakScheduler(schedulerDelegate);

            schedulerDelegate.OnStoppedAction = () =>
            {
                stopListening.Dispose();
                stopListening = null;
                wh.Set();
            };
            schedulerDelegate.OnExceptionAction = e =>
            {
                schedulerError = e;
                Debug.WriteLine("Error on scheduler");
                e.DebugStackTrace();
                scheduler.Stop();
            };

            scheduler.Post(() =>
            {
                stopListening = server.Listen(ep);
                schedulerStartedAction();
            });

            serverDelegate = new ServerDelegate();
            server = new DefaultKayakServer(serverDelegate, scheduler);

            clientSocketDelegate = new SocketDelegate();
            client = new DefaultKayakSocket(clientSocketDelegate, scheduler);
        }
示例#8
0
        public void Server_writes_synchronously_client_buffers_synchronously()
        {
            serverDelegate.OnConnectionAction = (server, socket) =>
            {
                serverSocketDelegate = new SocketDelegate();

                serverSocketDelegate.OnCloseAction = () =>
                {
                    socket.Dispose();
                    scheduler.Stop();
                };

                WriteDataSync(socket);

                return serverSocketDelegate;
            };

            schedulerStartedAction = () =>
            {
                clientSocketDelegate.OnEndAction = () =>
                {
                    client.End();
                };

                client.Connect(ep);
            };

            RunScheduler();

            AssertConnectionAndCleanShutdown();
            Assert.That(clientSocketDelegate.Buffer.GetString(),
                Is.EqualTo("hailey is a stinky punky butt nugget dot com"));
        }
示例#9
0
        public void SetUp()
        {
            ep = new IPEndPoint(IPAddress.Loopback, Config.Port);

            wh = new ManualResetEventSlim();

            IDisposable d = null;

            var schedulerDelegate = new SchedulerDelegate();
            schedulerDelegate.OnStoppedAction = () =>
            {
                d.Dispose();
                wh.Set();
            };

            scheduler = new KayakScheduler(schedulerDelegate);
            scheduler.Post(() =>
            {
                d = server.Listen(ep);
                schedulerStartedAction();
            });

            var serverDelegate = new ServerDelegate();
            server = new KayakServer(serverDelegate, scheduler);

            clientSocketDelegate = new SocketDelegate();
            client = new KayakSocket(clientSocketDelegate, scheduler);
        }
示例#10
0
        public void Client_writes_synchronously_server_buffers_synchronously()
        {
            serverDelegate.OnConnectionAction = (server, socket) =>
            {
                Debug.WriteLine("server OnConnection");
                serverSocketDelegate = new SocketDelegate();

                serverSocketDelegate.OnEndAction = () =>
                {
                    Debug.WriteLine("serverSocket OnEnd");
                    socket.End();
                };

                serverSocketDelegate.OnCloseAction = () =>
                {
                    Debug.WriteLine("serverSocket OnClose");
                    socket.Dispose();
                };

                return serverSocketDelegate;
            };

            schedulerStartedAction = () =>
            {
                clientSocketDelegate.OnConnectedAction = () =>
                {
                    Debug.WriteLine("client OnConnected");
                    try
                    {
                        WriteDataSync(client);
                    }
                    catch (Exception e)
                    {
                        e.DebugStacktrace();
                    }
                };

                clientSocketDelegate.OnCloseAction = () =>
                {
                    Debug.WriteLine("client OnClose");
                    scheduler.Stop();

                };

                client.Connect(ep);
            };

            RunScheduler();

            AssertConnectionAndCleanShutdown();
            Assert.That(
                serverSocketDelegate.Buffer.ToString(),
                Is.EqualTo("hailey is a stinky punky butt nugget dot com"));
        }