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; }
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; }
/** * Write PHP array, as table. Input array format: keys are strings, * values are (type,value) tuples. * * @param $d * * @return Writer */ public function writeTable($d) { $this->flushBits(); $table_data = new Writer(); foreach ($d as $k => $va) { list($ftype, $v) = $va; $table_data->writeShortStr($k); if ($ftype == 'S') { $table_data->write('S'); $table_data->writeLongStr($v); } else { if ($ftype == 'I') { $table_data->write('I'); $table_data->_writeSignedLong($v); } else { if ($ftype == 'D') { // 'D' type values are passed Decimal instances. $table_data->write('D'); $table_data->writeOctet($v->e); $table_data->_writeSignedLong($v->n); } else { if ($ftype == 'T') { $table_data->write('T'); $table_data->writeTimestamp($v); } else { if ($ftype == 'F') { $table_data->write('F'); $table_data->writeTable($v); } else { if ($ftype = 'A') { $table_data->write('A'); $table_data->writeArray($v); } } } } } } } $table_data = $table_data->getvalue(); $this->writeLong(strlen($table_data)); $this->write($table_data); return $this; }
protected function doFunctionList($context) { $stream = new BytesIO(); $writer = new Writer($stream, true); $stream->write(Tags::TagFunctions); $writer->writeArray($this->names); $stream->write(Tags::TagEnd); $data = $stream->toString(); $stream->close(); return $this->outputFilter($data, $context); }