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(); } }
public void Stop() { if (!isStarted) { return; } acceptor.Unbind(); CloseAllClient(); acceptor.Dispose(); thread.Abort(); isStarted = false; }