/**
  * @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;
     }
 }
Example #3
0
 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;
     }
 }
Example #4
0
 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();
 }