Add support for selecting the libev backend #269
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request adds support for selecting the backend (
poll
,select
,kqueue
, etc.) used by the libev engine. (The libev man page has some fairly forthright notes about the tradeoffs between the various backends.)The backends are exposed as members of an abstract type,
Ev_backend.t
in the Lwt engine module:Keeping the type abstract leaves open the possibility to extend the interface in a backwards-compatible way in the future. For example, it is sometimes useful to pass multiple backend flags, leaving libev to select the best backend from those available; this could be supported in Lwt by the addition of a function of type
Ev_backend.t -> Ev_backend.t -> Ev_backend.t
. For the moment there is only support for passing a single backend.The backend is passed as an argument to the
libev
class:The addition of arguments to
libev
is a backwards incompatible change, and client code must be changed to add a unit argument:new libev
However, this is a one-time cost: if the
libev
interface is extended with additional optional flags in the future, no further changes to client code will be needed.