public function __construct(Options $options, VhostContainer $vhosts, PsrLogger $logger, Ticker $ticker)
{
$this->options = $options;
$this->vhosts = $vhosts;
$this->logger = $logger;
$this->ticker = $ticker;
$this->observers = new \SplObjectStorage();
$this->observers->attach($ticker);
$this->ticker->use($this->makePrivateCallable("timeoutKeepAlives"));
$this->nullBody = new NullBody();
// private callables that we pass to external code //
$this->exporter = $this->makePrivateCallable("export");
$this->onAcceptable = $this->makePrivateCallable("onAcceptable");
$this->negotiateCrypto = $this->makePrivateCallable("negotiateCrypto");
$this->onReadable = $this->makePrivateCallable("onReadable");
$this->onWritable = $this->makePrivateCallable("onWritable");
$this->onCoroutineAppResolve = $this->makePrivateCallable("onCoroutineAppResolve");
$this->onResponseDataDone = $this->makePrivateCallable("onResponseDataDone");
}