private function encode($name, array $args, stdClass $context) { $stream = new BytesIO(Tags::TagCall); $writer = new Writer($stream, $context->simple); $writer->writeString($name); if (count($args) > 0 || $context->byref) { $writer->reset(); $writer->writeArray($args); if ($context->byref) { $writer->writeBoolean(true); } } $stream->write(Tags::TagEnd); $request = $stream->toString(); $stream->close(); return $request; }
protected function sendError($error, $context) { if ($this->onSendError !== null) { $sendError = $this->onSendError; $sendError($error, $context); } $stream = new BytesIO(); $writer = new Writer($stream, true); $stream->write(Tags::TagError); $writer->writeString($error); $stream->write(Tags::TagEnd); $data = $stream->toString(); $stream->close(); return $this->outputFilter($data, $context); }
private function doOutput($name, &$args, $byref, $simple, $context) { if ($simple === null) { $simple = $this->simple; } $stream = new BytesIO(Tags::TagCall); $writer = new Writer($stream, $simple); $writer->writeString($name); if (count($args) > 0 || $byref) { $writer->reset(); $writer->writeArray($args); if ($byref) { $writer->writeBoolean(true); } } $stream->write(Tags::TagEnd); $request = $stream->toString(); $count = count($this->filters); for ($i = 0; $i < $count; $i++) { $request = $this->filters[$i]->outputFilter($request, $context); } $stream->close(); return $request; }
function sendError($error, stdClass $context) { if (is_string($error)) { $error = new Exception($error); } try { if ($this->onSendError !== null) { $onSendError = $this->onSendError; $e = call_user_func_array($onSendError, array(&$error, $context)); if ($e instanceof Exception || $e instanceof Throwable) { $error = $e; } } } catch (Exception $e) { $error = $e; } $stream = new BytesIO(); $writer = new Writer($stream, true); $stream->write(Tags::TagError); $writer->writeString($this->debug ? $error->getTraceAsString() : $error->getMessage()); return $stream; }