public IDisposable Listen(IPEndPoint ep) { if (listening) { throw new InvalidOperationException("Already listening."); } ListenEndPoint = ep; listener = new ConnectionListener(eventBase, ep, 1000); listener.Enable(); listener.ConnectionAccepted = (fd, remoteEp) => { connections++; var ev = new Event(eventBase, fd, Events.EV_WRITE | Events.EV_READ); //if (OnConnection != null) // OnConnection(this, new ConnectionEventArgs(new OarsSocket(ev, remoteEp, this))); }; listening = true; closed = false; // XXX return Disposable(() => Close()); return(null); }