Pipe::Pipe(EventLoop& ioContext) : Channel(ioContext), _duplex(createNonblockingPipe()) { auto& selector = ioContext.getSelector(); selector.add(_duplex.getReadEnd().getSelectId(), Selector::Events::Read, this); selector.add(_duplex.getWriteEnd().getSelectId(), Selector::Events::Write, this); }