示例#1
0
        public void TestConnectFutureSuccessTiming()
        {
            Int32      port     = 12345;
            IoAcceptor acceptor = CreateAcceptor();

            acceptor.Bind(CreateEndPoint(port));

            StringBuilder buf = new StringBuilder();

            try
            {
                IoConnector connector = CreateConnector();
                connector.SessionCreated  += (s, e) => buf.Append("1");
                connector.SessionOpened   += (s, e) => buf.Append("2");
                connector.ExceptionCaught += (s, e) => buf.Append("X");

                IConnectFuture future = connector.Connect(CreateEndPoint(port));
                future.Await();
                buf.Append("3");
                future.Session.Close(true);
                // sessionCreated() will fire before the connect future completes
                // but sessionOpened() may not
                Assert.IsTrue(new Regex("12?32?").IsMatch(buf.ToString()));
            }
            finally
            {
                acceptor.Unbind();
                acceptor.Dispose();
            }
        }
示例#2
0
        public void Stop()
        {
            if (!isStarted)
            {
                return;
            }

            acceptor.Unbind();
            CloseAllClient();
            acceptor.Dispose();
            thread.Abort();
            isStarted = false;
        }