public void TestRemoveListener2() { DefaultCloseFuture future = new DefaultCloseFuture(null); Assert.IsFalse(future.Done); Assert.IsFalse(future.Closed); IoFuture f1 = null, f2 = null; EventHandler <IoFutureEventArgs> listener1 = (s, e) => f1 = e.Future; EventHandler <IoFutureEventArgs> listener2 = (s, e) => f2 = e.Future; future.Complete += listener1; future.Complete += listener2; future.Complete -= listener2; TestThread thread = new TestThread(future); thread.Start(); future.Closed = true; thread.Join(); Assert.IsTrue(thread.success); Assert.IsTrue(future.Done); Assert.IsTrue(future.Closed); Assert.AreSame(future, f1); Assert.AreSame(null, f2); }
public void TestAddListener() { DefaultCloseFuture future = new DefaultCloseFuture(null); Assert.IsFalse(future.Done); Assert.IsFalse(future.Closed); IoFuture f1 = null, f2 = null; future.Complete += (s, e) => f1 = e.Future; future.Complete += (s, e) => f2 = e.Future; TestThread thread = new TestThread(future); thread.Start(); future.Closed = true; thread.Join(); Assert.IsTrue(thread.success); Assert.IsTrue(future.Done); Assert.IsTrue(future.Closed); Assert.AreSame(future, f1); Assert.AreSame(future, f2); }
/// <inheritdoc/> protected override void FinishSessionInitialization0(IoSession session, IoFuture future) { // In case that IConnectFuture.Cancel() is invoked before // SetSession() is invoked, add a listener that closes the // connection immediately on cancellation. future.Complete += (s, e) => { if (((IConnectFuture)e.Future).Canceled) { session.Close(true); } }; }
/// <inheritdoc/> protected override void FinishSessionInitialization0(IoSession session, IoFuture future) { // In case that IConnectFuture.Cancel() is invoked before // SetSession() is invoked, add a listener that closes the // connection immediately on cancellation. future.Complete += (s, e) => { if (((IConnectFuture)e.Future).Canceled) session.Close(true); }; }
/// <summary> /// </summary> public IoFutureEventArgs(IoFuture future) { _future = future; }
internal void DoFinishSessionInitialization(IoSession session, IoFuture future) { InitSession(session, future, null); }
public TestThread(IoFuture future) { this.future = future; this.t = new Thread(Run); }
/// <summary> /// Implement this method to perform additional tasks required for session /// initialization. Do not call this method directly. /// </summary> protected virtual void FinishSessionInitialization0(IoSession session, IoFuture future) { // Do nothing. Extended class might add some specific code }