Exemplo n.º 1
0
 public static function deserialize($str, $object, $override_version = null, $disable_hphp_extension = false)
 {
     $transport = new TMemoryBuffer();
     $protocol = new TCompactProtocolAccelerated($transport);
     $use_hphp_extension = \hacklib_cast_as_boolean(function_exists('thrift_protocol_read_compact')) && !\hacklib_cast_as_boolean($disable_hphp_extension);
     if ($override_version !== null) {
         $protocol->setWriteVersion($override_version);
         if (!\hacklib_cast_as_boolean(function_exists('thrift_protocol_set_compact_version'))) {
             $use_hphp_extension = false;
         }
     }
     if (\hacklib_cast_as_boolean($use_hphp_extension)) {
         $protocol->writeMessageBegin('', TMessageType::REPLY, 0);
         $transport->write($str);
         $object = thrift_protocol_read_compact($protocol, get_class($object));
     } else {
         $transport->write($str);
         $object->read($protocol);
     }
     return $object;
 }
Exemplo n.º 2
0
function test()
{
    $p = new DummyProtocol();
    $v1 = new TestStruct();
    $v1->aBool = true;
    $v1->anInt = 1234;
    $v1->aString = 'abcdef';
    $v1->aDouble = 1.2345;
    $v1->anInt64 = 8589934592;
    $v1->aList = array(13.3, 23.4, 3576.2);
    $v1->aMap = array(10 => 1.2, 43 => 5.33);
    $v1->aSet = array(10 => true, 11 => true);
    $v1->anByte = 123;
    $v1->anI16 = 1234;
    $v1->aFloat = 1.25;
    $v1->bFloat = 3.141592653589793;
    thrift_protocol_write_compact($p, 'foomethod', 1, $v1, 20);
    $p->getTransport()->buff[1] = pack('C', 0x42);
    var_dump(thrift_protocol_read_compact($p, 'TestStruct'));
}
Exemplo n.º 3
0
function testBadSpec($ok, $bad)
{
    EdgeObject::$_TSPEC = $ok;
    $p = new DummyProtocol();
    $v1 = new EdgeObject();
    $v1->appId = 1234;
    $v1->timeCreated = 5678;
    $v1->actionSource = 42;
    $v1->type = 87;
    thrift_protocol_write_compact($p, 'foomethod', 1, $v1, 20);
    var_dump($p->getTransport()->buff);
    $p->getTransport()->buff[1] = pack('C', 0x42);
    $p->getTransport()->pos = 0;
    var_dump(thrift_protocol_read_compact($p, 'EdgeObject'));
    EdgeObject::$_TSPEC = $bad;
    $p->getTransport()->pos = 0;
    try {
        var_dump(thrift_protocol_read_compact($p, 'EdgeObject'));
    } catch (TProtocolException $e) {
        echo $e->getMessage() . "\n";
    }
}