/** * Update stream context * @param qio\Context $context * @return qio\Context */ public function setContext(qio\Context $context) { $create = function () use($context) { if (!$context->isCreated()) { $context->create(); } }; if (!$this->isOpen()) { $this->attach('open', function () use($create) { $create(); }); } else { $create(); } return $this->context = $context; }