Abstract event manager

sharing event manager API
I'm guessing FileEncoder handles all the cleanup work on the fd, and possibly overlapping requests?