Encapsulates a socket or device node into an abstract event source, providing a common
interface.
It supports read and write operations to provide and accept events just like an event device
node would, except that it handles virtio_input_event instead of input_event structures.
It’s necessary to call receive_events() before events are available for read.