/** * @param Request $request * @param $processor * @param string $protocol * @return Response */ public static function make($request, $processor, $protocol) { $readTransport = new TMemoryBuffer($request->getContent()); $writeTransport = new TMemoryBuffer(); switch ($protocol) { case 'json': $readProtocol = new TJSONProtocol($readTransport); $writeProtocol = new TJSONProtocol($writeTransport); break; case 'binary': $readProtocol = new TBinaryProtocol($readTransport); $writeProtocol = new TBinaryProtocol($writeTransport); break; case 'compact': $readProtocol = new TCompactProtocol($readTransport); $writeProtocol = new TCompactProtocol($writeTransport); break; default: throw new UnexpectedValueException(); } $readTransport->open(); $writeTransport->open(); $processor->process($readProtocol, $writeProtocol); $readTransport->close(); $writeTransport->close(); $content = $writeTransport->getBuffer(); return new Response($content, 200, ['Content-Type' => 'application/x-thrift', 'Access-Control-Allow-Origin' => $request->header('origin')]); }
public static function deserialize($string_object, $class_name) { $transport = new TMemoryBuffer(); $protocol = new TBinaryProtocolAccelerated($transport); if (function_exists('thrift_protocol_read_binary')) { $protocol->writeMessageBegin('', TMessageType::REPLY, 0); $transport->write($string_object); return thrift_protocol_read_binary($protocol, $class_name, $protocol->isStrictRead()); } else { $transport->write($string_object); $object = new $class_name(); $object->read($protocol); return $object; } }
public static function deserialize($string_object, $class_name) { $transport = new TMemoryBuffer(); $protocol = new TBinaryProtocolAccelerated($transport); if (function_exists('thrift_protocol_read_binary')) { // NOTE (t.heintz) TBinaryProtocolAccelerated internally wraps our TMemoryBuffer in a // TBufferedTransport, so we have to retrieve it again or risk losing data when writing // less than 512 bytes to the transport (see the comment there as well). // @see THRIFT-1579 $protocol->writeMessageBegin('', TMessageType::REPLY, 0); $protocolTransport = $protocol->getTransport(); $protocolTransport->write($string_object); $protocolTransport->flush(); return thrift_protocol_read_binary($protocol, $class_name, $protocol->isStrictRead()); } else { $transport->write($string_object); $object = new $class_name(); $object->read($protocol); return $object; } }
public function writeContextSerialize() { global $context; if (empty($context)) { return ''; } $obj = new \Thrift\ContextSeralize($context); $transObj = new \Thrift\Transport\TMemoryBuffer(); $protocol = new \Thrift\Protocol\TBinaryProtocol($transObj); $obj->write($protocol); return $transObj->getBuffer(); }