You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by jk...@apache.org on 2018/01/16 14:23:27 UTC
[5/8] thrift git commit: THRIFT-4459: reduce php library directory
depth Client: php
http://git-wip-us.apache.org/repos/asf/thrift/blob/bfba370b/lib/php/lib/Thrift/Protocol/TBinaryProtocolAccelerated.php
----------------------------------------------------------------------
diff --git a/lib/php/lib/Thrift/Protocol/TBinaryProtocolAccelerated.php b/lib/php/lib/Thrift/Protocol/TBinaryProtocolAccelerated.php
deleted file mode 100644
index f0e0bb9..0000000
--- a/lib/php/lib/Thrift/Protocol/TBinaryProtocolAccelerated.php
+++ /dev/null
@@ -1,65 +0,0 @@
-<?php
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- * @package thrift.protocol
- */
-
-namespace Thrift\Protocol;
-
-use Thrift\Transport\TBufferedTransport;
-
-/**
- * Accelerated binary protocol: used in conjunction with the thrift_protocol
- * extension for faster deserialization
- */
-class TBinaryProtocolAccelerated extends TBinaryProtocol
-{
- public function __construct($trans, $strictRead=false, $strictWrite=true)
- {
- // If the transport doesn't implement putBack, wrap it in a
- // TBufferedTransport (which does)
-
- // NOTE (t.heintz): This is very evil to do, because the TBufferedTransport may swallow bytes, which
- // are then never written to the underlying transport. This happens precisely when a number of bytes
- // less than the max buffer size (512 by default) is written to the transport and then flush() is NOT
- // called. In that case the data stays in the writeBuffer of the transport, from where it can never be
- // accessed again (for example through read()).
- //
- // Since the caller of this method does not know about the wrapping transport, this creates bugs which
- // are very difficult to find. Hence the wrapping of a transport in a buffer should be left to the
- // calling code. An interface could used to mandate the presence of the putBack() method in the transport.
- //
- // I am leaving this code in nonetheless, because there may be applications depending on this behavior.
- //
- // @see THRIFT-1579
-
- if (!method_exists($trans, 'putBack')) {
- $trans = new TBufferedTransport($trans);
- }
- parent::__construct($trans, $strictRead, $strictWrite);
- }
- public function isStrictRead()
- {
- return $this->strictRead_;
- }
- public function isStrictWrite()
- {
- return $this->strictWrite_;
- }
-}
http://git-wip-us.apache.org/repos/asf/thrift/blob/bfba370b/lib/php/lib/Thrift/Protocol/TCompactProtocol.php
----------------------------------------------------------------------
diff --git a/lib/php/lib/Thrift/Protocol/TCompactProtocol.php b/lib/php/lib/Thrift/Protocol/TCompactProtocol.php
deleted file mode 100644
index c25b050..0000000
--- a/lib/php/lib/Thrift/Protocol/TCompactProtocol.php
+++ /dev/null
@@ -1,739 +0,0 @@
-<?php
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- * @package thrift.protocol
- */
-
-namespace Thrift\Protocol;
-
-use Thrift\Type\TType;
-use Thrift\Exception\TProtocolException;
-use Thrift\Factory\TStringFuncFactory;
-
-/**
- * Compact implementation of the Thrift protocol.
- *
- */
-class TCompactProtocol extends TProtocol
-{
- const COMPACT_STOP = 0x00;
- const COMPACT_TRUE = 0x01;
- const COMPACT_FALSE = 0x02;
- const COMPACT_BYTE = 0x03;
- const COMPACT_I16 = 0x04;
- const COMPACT_I32 = 0x05;
- const COMPACT_I64 = 0x06;
- const COMPACT_DOUBLE = 0x07;
- const COMPACT_BINARY = 0x08;
- const COMPACT_LIST = 0x09;
- const COMPACT_SET = 0x0A;
- const COMPACT_MAP = 0x0B;
- const COMPACT_STRUCT = 0x0C;
-
- const STATE_CLEAR = 0;
- const STATE_FIELD_WRITE = 1;
- const STATE_VALUE_WRITE = 2;
- const STATE_CONTAINER_WRITE = 3;
- const STATE_BOOL_WRITE = 4;
- const STATE_FIELD_READ = 5;
- const STATE_CONTAINER_READ = 6;
- const STATE_VALUE_READ = 7;
- const STATE_BOOL_READ = 8;
-
- const VERSION_MASK = 0x1f;
- const VERSION = 1;
- const PROTOCOL_ID = 0x82;
- const TYPE_MASK = 0xe0;
- const TYPE_BITS = 0x07;
- const TYPE_SHIFT_AMOUNT = 5;
-
- protected static $ctypes = array(
- TType::STOP => TCompactProtocol::COMPACT_STOP,
- TType::BOOL => TCompactProtocol::COMPACT_TRUE, // used for collection
- TType::BYTE => TCompactProtocol::COMPACT_BYTE,
- TType::I16 => TCompactProtocol::COMPACT_I16,
- TType::I32 => TCompactProtocol::COMPACT_I32,
- TType::I64 => TCompactProtocol::COMPACT_I64,
- TType::DOUBLE => TCompactProtocol::COMPACT_DOUBLE,
- TType::STRING => TCompactProtocol::COMPACT_BINARY,
- TType::STRUCT => TCompactProtocol::COMPACT_STRUCT,
- TType::LST => TCompactProtocol::COMPACT_LIST,
- TType::SET => TCompactProtocol::COMPACT_SET,
- TType::MAP => TCompactProtocol::COMPACT_MAP,
- );
-
- protected static $ttypes = array(
- TCompactProtocol::COMPACT_STOP => TType::STOP ,
- TCompactProtocol::COMPACT_TRUE => TType::BOOL, // used for collection
- TCompactProtocol::COMPACT_FALSE => TType::BOOL,
- TCompactProtocol::COMPACT_BYTE => TType::BYTE,
- TCompactProtocol::COMPACT_I16 => TType::I16,
- TCompactProtocol::COMPACT_I32 => TType::I32,
- TCompactProtocol::COMPACT_I64 => TType::I64,
- TCompactProtocol::COMPACT_DOUBLE => TType::DOUBLE,
- TCompactProtocol::COMPACT_BINARY => TType::STRING,
- TCompactProtocol::COMPACT_STRUCT => TType::STRUCT,
- TCompactProtocol::COMPACT_LIST => TType::LST,
- TCompactProtocol::COMPACT_SET => TType::SET,
- TCompactProtocol::COMPACT_MAP => TType::MAP,
- );
-
- protected $state = TCompactProtocol::STATE_CLEAR;
- protected $lastFid = 0;
- protected $boolFid = null;
- protected $boolValue = null;
- protected $structs = array();
- protected $containers = array();
-
- // Some varint / zigzag helper methods
- public function toZigZag($n, $bits)
- {
- return ($n << 1) ^ ($n >> ($bits - 1));
- }
-
- public function fromZigZag($n)
- {
- return ($n >> 1) ^ -($n & 1);
- }
-
- public function getVarint($data)
- {
- $out = "";
- while (true) {
- if (($data & ~0x7f) === 0) {
- $out .= chr($data);
- break;
- } else {
- $out .= chr(($data & 0xff) | 0x80);
- $data = $data >> 7;
- }
- }
-
- return $out;
- }
-
- public function writeVarint($data)
- {
- $out = $this->getVarint($data);
- $result = TStringFuncFactory::create()->strlen($out);
- $this->trans_->write($out, $result);
-
- return $result;
- }
-
- public function readVarint(&$result)
- {
- $idx = 0;
- $shift = 0;
- $result = 0;
- while (true) {
- $x = $this->trans_->readAll(1);
- $arr = unpack('C', $x);
- $byte = $arr[1];
- $idx += 1;
- $result |= ($byte & 0x7f) << $shift;
- if (($byte >> 7) === 0) {
- return $idx;
- }
- $shift += 7;
- }
-
- return $idx;
- }
-
- public function __construct($trans)
- {
- parent::__construct($trans);
- }
-
- public function writeMessageBegin($name, $type, $seqid)
- {
- $written =
- $this->writeUByte(TCompactProtocol::PROTOCOL_ID) +
- $this->writeUByte(TCompactProtocol::VERSION |
- ($type << TCompactProtocol::TYPE_SHIFT_AMOUNT)) +
- $this->writeVarint($seqid) +
- $this->writeString($name);
- $this->state = TCompactProtocol::STATE_VALUE_WRITE;
-
- return $written;
- }
-
- public function writeMessageEnd()
- {
- $this->state = TCompactProtocol::STATE_CLEAR;
-
- return 0;
- }
-
- public function writeStructBegin($name)
- {
- $this->structs[] = array($this->state, $this->lastFid);
- $this->state = TCompactProtocol::STATE_FIELD_WRITE;
- $this->lastFid = 0;
-
- return 0;
- }
-
- public function writeStructEnd()
- {
- $old_values = array_pop($this->structs);
- $this->state = $old_values[0];
- $this->lastFid = $old_values[1];
-
- return 0;
- }
-
- public function writeFieldStop()
- {
- return $this->writeByte(0);
- }
-
- public function writeFieldHeader($type, $fid)
- {
- $written = 0;
- $delta = $fid - $this->lastFid;
- if (0 < $delta && $delta <= 15) {
- $written = $this->writeUByte(($delta << 4) | $type);
- } else {
- $written = $this->writeByte($type) +
- $this->writeI16($fid);
- }
- $this->lastFid = $fid;
-
- return $written;
- }
-
- public function writeFieldBegin($field_name, $field_type, $field_id)
- {
- if ($field_type == TTYPE::BOOL) {
- $this->state = TCompactProtocol::STATE_BOOL_WRITE;
- $this->boolFid = $field_id;
-
- return 0;
- } else {
- $this->state = TCompactProtocol::STATE_VALUE_WRITE;
-
- return $this->writeFieldHeader(self::$ctypes[$field_type], $field_id);
- }
- }
-
- public function writeFieldEnd()
- {
- $this->state = TCompactProtocol::STATE_FIELD_WRITE;
-
- return 0;
- }
-
- public function writeCollectionBegin($etype, $size)
- {
- $written = 0;
- if ($size <= 14) {
- $written = $this->writeUByte($size << 4 |
- self::$ctypes[$etype]);
- } else {
- $written = $this->writeUByte(0xf0 |
- self::$ctypes[$etype]) +
- $this->writeVarint($size);
- }
- $this->containers[] = $this->state;
- $this->state = TCompactProtocol::STATE_CONTAINER_WRITE;
-
- return $written;
- }
-
- public function writeMapBegin($key_type, $val_type, $size)
- {
- $written = 0;
- if ($size == 0) {
- $written = $this->writeByte(0);
- } else {
- $written = $this->writeVarint($size) +
- $this->writeUByte(self::$ctypes[$key_type] << 4 |
- self::$ctypes[$val_type]);
- }
- $this->containers[] = $this->state;
-
- return $written;
- }
-
- public function writeCollectionEnd()
- {
- $this->state = array_pop($this->containers);
-
- return 0;
- }
-
- public function writeMapEnd()
- {
- return $this->writeCollectionEnd();
- }
-
- public function writeListBegin($elem_type, $size)
- {
- return $this->writeCollectionBegin($elem_type, $size);
- }
-
- public function writeListEnd()
- {
- return $this->writeCollectionEnd();
- }
-
- public function writeSetBegin($elem_type, $size)
- {
- return $this->writeCollectionBegin($elem_type, $size);
- }
-
- public function writeSetEnd()
- {
- return $this->writeCollectionEnd();
- }
-
- public function writeBool($value)
- {
- if ($this->state == TCompactProtocol::STATE_BOOL_WRITE) {
- $ctype = TCompactProtocol::COMPACT_FALSE;
- if ($value) {
- $ctype = TCompactProtocol::COMPACT_TRUE;
- }
-
- return $this->writeFieldHeader($ctype, $this->boolFid);
- } elseif ($this->state == TCompactProtocol::STATE_CONTAINER_WRITE) {
- return $this->writeByte($value ? 1 : 0);
- } else {
- throw new TProtocolException('Invalid state in compact protocol');
- }
- }
-
- public function writeByte($value)
- {
- $data = pack('c', $value);
- $this->trans_->write($data, 1);
-
- return 1;
- }
-
- public function writeUByte($byte)
- {
- $this->trans_->write(pack('C', $byte), 1);
-
- return 1;
- }
-
- public function writeI16($value)
- {
- $thing = $this->toZigZag($value, 16);
-
- return $this->writeVarint($thing);
- }
-
- public function writeI32($value)
- {
- $thing = $this->toZigZag($value, 32);
-
- return $this->writeVarint($thing);
- }
-
- public function writeDouble($value)
- {
- $data = pack('d', $value);
- $this->trans_->write($data, 8);
-
- return 8;
- }
-
- public function writeString($value)
- {
- $len = TStringFuncFactory::create()->strlen($value);
- $result = $this->writeVarint($len);
- if ($len) {
- $this->trans_->write($value, $len);
- }
-
- return $result + $len;
- }
-
- public function readFieldBegin(&$name, &$field_type, &$field_id)
- {
- $result = $this->readUByte($compact_type_and_delta);
-
- $compact_type = $compact_type_and_delta & 0x0f;
-
- if ($compact_type == TType::STOP) {
- $field_type = $compact_type;
- $field_id = 0;
-
- return $result;
- }
- $delta = $compact_type_and_delta >> 4;
- if ($delta == 0) {
- $result += $this->readI16($field_id);
- } else {
- $field_id = $this->lastFid + $delta;
- }
- $this->lastFid = $field_id;
- $field_type = $this->getTType($compact_type);
-
- if ($compact_type == TCompactProtocol::COMPACT_TRUE) {
- $this->state = TCompactProtocol::STATE_BOOL_READ;
- $this->boolValue = true;
- } elseif ($compact_type == TCompactProtocol::COMPACT_FALSE) {
- $this->state = TCompactProtocol::STATE_BOOL_READ;
- $this->boolValue = false;
- } else {
- $this->state = TCompactProtocol::STATE_VALUE_READ;
- }
-
- return $result;
- }
-
- public function readFieldEnd()
- {
- $this->state = TCompactProtocol::STATE_FIELD_READ;
-
- return 0;
- }
-
- public function readUByte(&$value)
- {
- $data = $this->trans_->readAll(1);
- $arr = unpack('C', $data);
- $value = $arr[1];
-
- return 1;
- }
-
- public function readByte(&$value)
- {
- $data = $this->trans_->readAll(1);
- $arr = unpack('c', $data);
- $value = $arr[1];
-
- return 1;
- }
-
- public function readZigZag(&$value)
- {
- $result = $this->readVarint($value);
- $value = $this->fromZigZag($value);
-
- return $result;
- }
-
- public function readMessageBegin(&$name, &$type, &$seqid)
- {
- $protoId = 0;
- $result = $this->readUByte($protoId);
- if ($protoId != TCompactProtocol::PROTOCOL_ID) {
- throw new TProtocolException('Bad protocol id in TCompact message');
- }
- $verType = 0;
- $result += $this->readUByte($verType);
- $type = ($verType >> TCompactProtocol::TYPE_SHIFT_AMOUNT) & TCompactProtocol::TYPE_BITS;
- $version = $verType & TCompactProtocol::VERSION_MASK;
- if ($version != TCompactProtocol::VERSION) {
- throw new TProtocolException('Bad version in TCompact message');
- }
- $result += $this->readVarint($seqid);
- $result += $this->readString($name);
-
- return $result;
- }
-
- public function readMessageEnd()
- {
- return 0;
- }
-
- public function readStructBegin(&$name)
- {
- $name = ''; // unused
- $this->structs[] = array($this->state, $this->lastFid);
- $this->state = TCompactProtocol::STATE_FIELD_READ;
- $this->lastFid = 0;
-
- return 0;
- }
-
- public function readStructEnd()
- {
- $last = array_pop($this->structs);
- $this->state = $last[0];
- $this->lastFid = $last[1];
-
- return 0;
- }
-
- public function readCollectionBegin(&$type, &$size)
- {
- $sizeType = 0;
- $result = $this->readUByte($sizeType);
- $size = $sizeType >> 4;
- $type = $this->getTType($sizeType);
- if ($size == 15) {
- $result += $this->readVarint($size);
- }
- $this->containers[] = $this->state;
- $this->state = TCompactProtocol::STATE_CONTAINER_READ;
-
- return $result;
- }
-
- public function readMapBegin(&$key_type, &$val_type, &$size)
- {
- $result = $this->readVarint($size);
- $types = 0;
- if ($size > 0) {
- $result += $this->readUByte($types);
- }
- $val_type = $this->getTType($types);
- $key_type = $this->getTType($types >> 4);
- $this->containers[] = $this->state;
- $this->state = TCompactProtocol::STATE_CONTAINER_READ;
-
- return $result;
- }
-
- public function readCollectionEnd()
- {
- $this->state = array_pop($this->containers);
-
- return 0;
- }
-
- public function readMapEnd()
- {
- return $this->readCollectionEnd();
- }
-
- public function readListBegin(&$elem_type, &$size)
- {
- return $this->readCollectionBegin($elem_type, $size);
- }
-
- public function readListEnd()
- {
- return $this->readCollectionEnd();
- }
-
- public function readSetBegin(&$elem_type, &$size)
- {
- return $this->readCollectionBegin($elem_type, $size);
- }
-
- public function readSetEnd()
- {
- return $this->readCollectionEnd();
- }
-
- public function readBool(&$value)
- {
- if ($this->state == TCompactProtocol::STATE_BOOL_READ) {
- $value = $this->boolValue;
-
- return 0;
- } elseif ($this->state == TCompactProtocol::STATE_CONTAINER_READ) {
- return $this->readByte($value);
- } else {
- throw new TProtocolException('Invalid state in compact protocol');
- }
- }
-
- public function readI16(&$value)
- {
- return $this->readZigZag($value);
- }
-
- public function readI32(&$value)
- {
- return $this->readZigZag($value);
- }
-
- public function readDouble(&$value)
- {
- $data = $this->trans_->readAll(8);
- $arr = unpack('d', $data);
- $value = $arr[1];
-
- return 8;
- }
-
- public function readString(&$value)
- {
- $result = $this->readVarint($len);
- if ($len) {
- $value = $this->trans_->readAll($len);
- } else {
- $value = '';
- }
-
- return $result + $len;
- }
-
- public function getTType($byte)
- {
- return self::$ttypes[$byte & 0x0f];
- }
-
- // If we are on a 32bit architecture we have to explicitly deal with
- // 64-bit twos-complement arithmetic since PHP wants to treat all ints
- // as signed and any int over 2^31 - 1 as a float
-
- // Read and write I64 as two 32 bit numbers $hi and $lo
-
- public function readI64(&$value)
- {
- // Read varint from wire
- $hi = 0;
- $lo = 0;
-
- $idx = 0;
- $shift = 0;
-
- while (true) {
- $x = $this->trans_->readAll(1);
- $arr = unpack('C', $x);
- $byte = $arr[1];
- $idx += 1;
- // Shift hi and lo together.
- if ($shift < 28) {
- $lo |= (($byte & 0x7f) << $shift);
- } elseif ($shift == 28) {
- $lo |= (($byte & 0x0f) << 28);
- $hi |= (($byte & 0x70) >> 4);
- } else {
- $hi |= (($byte & 0x7f) << ($shift - 32));
- }
- if (($byte >> 7) === 0) {
- break;
- }
- $shift += 7;
- }
-
- // Now, unzig it.
- $xorer = 0;
- if ($lo & 1) {
- $xorer = 0xffffffff;
- }
- $lo = ($lo >> 1) & 0x7fffffff;
- $lo = $lo | (($hi & 1) << 31);
- $hi = ($hi >> 1) ^ $xorer;
- $lo = $lo ^ $xorer;
-
- // Now put $hi and $lo back together
- $isNeg = $hi < 0 || $hi & 0x80000000;
-
- // Check for a negative
- if ($isNeg) {
- $hi = ~$hi & (int) 0xffffffff;
- $lo = ~$lo & (int) 0xffffffff;
-
- if ($lo == (int) 0xffffffff) {
- $hi++;
- $lo = 0;
- } else {
- $lo++;
- }
- }
-
- // Force 32bit words in excess of 2G to be positive - we deal with sign
- // explicitly below
-
- if ($hi & (int) 0x80000000) {
- $hi &= (int) 0x7fffffff;
- $hi += 0x80000000;
- }
-
- if ($lo & (int) 0x80000000) {
- $lo &= (int) 0x7fffffff;
- $lo += 0x80000000;
- }
-
- // Create as negative value first, since we can store -2^63 but not 2^63
- $value = -$hi * 4294967296 - $lo;
-
- if (!$isNeg) {
- $value = -$value;
- }
-
- return $idx;
- }
-
- public function writeI64($value)
- {
- // If we are in an I32 range, use the easy method below.
- if (($value > 4294967296) || ($value < -4294967296)) {
- // Convert $value to $hi and $lo
- $neg = $value < 0;
-
- if ($neg) {
- $value *= -1;
- }
-
- $hi = (int) $value >> 32;
- $lo = (int) $value & 0xffffffff;
-
- if ($neg) {
- $hi = ~$hi;
- $lo = ~$lo;
- if (($lo & (int) 0xffffffff) == (int) 0xffffffff) {
- $lo = 0;
- $hi++;
- } else {
- $lo++;
- }
- }
-
- // Now do the zigging and zagging.
- $xorer = 0;
- if ($neg) {
- $xorer = 0xffffffff;
- }
- $lowbit = ($lo >> 31) & 1;
- $hi = ($hi << 1) | $lowbit;
- $lo = ($lo << 1);
- $lo = ($lo ^ $xorer) & 0xffffffff;
- $hi = ($hi ^ $xorer) & 0xffffffff;
-
- // now write out the varint, ensuring we shift both hi and lo
- $out = "";
- while (true) {
- if (($lo & ~0x7f) === 0 &&
- $hi === 0) {
- $out .= chr($lo);
- break;
- } else {
- $out .= chr(($lo & 0xff) | 0x80);
- $lo = $lo >> 7;
- $lo = $lo | ($hi << 25);
- $hi = $hi >> 7;
- // Right shift carries sign, but we don't want it to.
- $hi = $hi & (127 << 25);
- }
- }
-
- $ret = TStringFuncFactory::create()->strlen($out);
- $this->trans_->write($out, $ret);
-
- return $ret;
- } else {
- return $this->writeVarint($this->toZigZag($value, 64));
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/thrift/blob/bfba370b/lib/php/lib/Thrift/Protocol/TJSONProtocol.php
----------------------------------------------------------------------
diff --git a/lib/php/lib/Thrift/Protocol/TJSONProtocol.php b/lib/php/lib/Thrift/Protocol/TJSONProtocol.php
deleted file mode 100644
index 6d8e81f..0000000
--- a/lib/php/lib/Thrift/Protocol/TJSONProtocol.php
+++ /dev/null
@@ -1,807 +0,0 @@
-<?php
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- * @package thrift.protocol
- */
-
-namespace Thrift\Protocol;
-
-use Thrift\Type\TType;
-use Thrift\Exception\TProtocolException;
-use Thrift\Protocol\JSON\BaseContext;
-use Thrift\Protocol\JSON\LookaheadReader;
-use Thrift\Protocol\JSON\PairContext;
-use Thrift\Protocol\JSON\ListContext;
-
-/**
- * JSON implementation of thrift protocol, ported from Java.
- */
-class TJSONProtocol extends TProtocol
-{
- const COMMA = ',';
- const COLON = ':';
- const LBRACE = '{';
- const RBRACE = '}';
- const LBRACKET = '[';
- const RBRACKET = ']';
- const QUOTE = '"';
- const BACKSLASH = '\\';
- const ZERO = '0';
- const ESCSEQ = '\\';
- const DOUBLEESC = '__DOUBLE_ESCAPE_SEQUENCE__';
-
- const VERSION = 1;
-
- public static $JSON_CHAR_TABLE = array(
- /* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
- 0, 0, 0, 0, 0, 0, 0, 0, 'b', 't', 'n', 0, 'f', 'r', 0, 0, // 0
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 1
- 1, 1, '"', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 2
- );
-
- public static $ESCAPE_CHARS = array('"', '\\', '/', "b", "f", "n", "r", "t");
-
- public static $ESCAPE_CHAR_VALS = array(
- '"', '\\', '/', "\x08", "\f", "\n", "\r", "\t",
- );
-
- const NAME_BOOL = "tf";
- const NAME_BYTE = "i8";
- const NAME_I16 = "i16";
- const NAME_I32 = "i32";
- const NAME_I64 = "i64";
- const NAME_DOUBLE = "dbl";
- const NAME_STRUCT = "rec";
- const NAME_STRING = "str";
- const NAME_MAP = "map";
- const NAME_LIST = "lst";
- const NAME_SET = "set";
-
- private function getTypeNameForTypeID($typeID)
- {
- switch ($typeID) {
- case TType::BOOL:
- return self::NAME_BOOL;
- case TType::BYTE:
- return self::NAME_BYTE;
- case TType::I16:
- return self::NAME_I16;
- case TType::I32:
- return self::NAME_I32;
- case TType::I64:
- return self::NAME_I64;
- case TType::DOUBLE:
- return self::NAME_DOUBLE;
- case TType::STRING:
- return self::NAME_STRING;
- case TType::STRUCT:
- return self::NAME_STRUCT;
- case TType::MAP:
- return self::NAME_MAP;
- case TType::SET:
- return self::NAME_SET;
- case TType::LST:
- return self::NAME_LIST;
- default:
- throw new TProtocolException("Unrecognized type", TProtocolException::UNKNOWN);
- }
- }
-
- private function getTypeIDForTypeName($name)
- {
- $result = TType::STOP;
-
- if (strlen($name) > 1) {
- switch (substr($name, 0, 1)) {
- case 'd':
- $result = TType::DOUBLE;
- break;
- case 'i':
- switch (substr($name, 1, 1)) {
- case '8':
- $result = TType::BYTE;
- break;
- case '1':
- $result = TType::I16;
- break;
- case '3':
- $result = TType::I32;
- break;
- case '6':
- $result = TType::I64;
- break;
- }
- break;
- case 'l':
- $result = TType::LST;
- break;
- case 'm':
- $result = TType::MAP;
- break;
- case 'r':
- $result = TType::STRUCT;
- break;
- case 's':
- if (substr($name, 1, 1) == 't') {
- $result = TType::STRING;
- } elseif (substr($name, 1, 1) == 'e') {
- $result = TType::SET;
- }
- break;
- case 't':
- $result = TType::BOOL;
- break;
- }
- }
- if ($result == TType::STOP) {
- throw new TProtocolException("Unrecognized type", TProtocolException::INVALID_DATA);
- }
-
- return $result;
- }
-
- public $contextStack_ = array();
- public $context_;
- public $reader_;
-
- private function pushContext($c)
- {
- array_push($this->contextStack_, $this->context_);
- $this->context_ = $c;
- }
-
- private function popContext()
- {
- $this->context_ = array_pop($this->contextStack_);
- }
-
- public function __construct($trans)
- {
- parent::__construct($trans);
- $this->context_ = new BaseContext();
- $this->reader_ = new LookaheadReader($this);
- }
-
- public function reset()
- {
- $this->contextStack_ = array();
- $this->context_ = new BaseContext();
- $this->reader_ = new LookaheadReader($this);
- }
-
- private $tmpbuf_ = array(4);
-
- public function readJSONSyntaxChar($b)
- {
- $ch = $this->reader_->read();
-
- if (substr($ch, 0, 1) != $b) {
- throw new TProtocolException("Unexpected character: " . $ch, TProtocolException::INVALID_DATA);
- }
- }
-
- private function hexVal($s)
- {
- for ($i = 0; $i < strlen($s); $i++) {
- $ch = substr($s, $i, 1);
-
- if (!($ch >= "a" && $ch <= "f") && !($ch >= "0" && $ch <= "9")) {
- throw new TProtocolException("Expected hex character " . $ch, TProtocolException::INVALID_DATA);
- }
- }
-
- return hexdec($s);
- }
-
- private function hexChar($val)
- {
- return dechex($val);
- }
-
- private function hasJSONUnescapedUnicode()
- {
- if (PHP_MAJOR_VERSION > 5
- || (PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION >= 4))
- return true;
-
- return false;
- }
-
- private function unescapedUnicode($str)
- {
- if ($this->hasJSONUnescapedUnicode()) {
- return json_encode($str, JSON_UNESCAPED_UNICODE);
- }
-
- $json = json_encode($str);
-
- /*
- * Unescaped character outside the Basic Multilingual Plane
- * High surrogate: 0xD800 - 0xDBFF
- * Low surrogate: 0xDC00 - 0xDFFF
- */
- $json = preg_replace_callback('/\\\\u(d[89ab][0-9a-f]{2})\\\\u(d[cdef][0-9a-f]{2})/i',
- function ($matches) {
- return mb_convert_encoding(pack('H*', $matches[1].$matches[2]), 'UTF-8', 'UTF-16BE');
- }, $json);
-
- /*
- * Unescaped characters within the Basic Multilingual Plane
- */
- $json = preg_replace_callback('/\\\\u([0-9a-f]{4})/i',
- function ($matches) {
- return mb_convert_encoding(pack('H*', $matches[1]), 'UTF-8', 'UTF-16BE');
- }, $json);
-
- return $json;
- }
-
- private function writeJSONString($b)
- {
- $this->context_->write();
-
- if (is_numeric($b) && $this->context_->escapeNum()) {
- $this->trans_->write(self::QUOTE);
- }
-
- $this->trans_->write($this->unescapedUnicode($b));
-
- if (is_numeric($b) && $this->context_->escapeNum()) {
- $this->trans_->write(self::QUOTE);
- }
- }
-
- private function writeJSONInteger($num)
- {
- $this->context_->write();
-
- if ($this->context_->escapeNum()) {
- $this->trans_->write(self::QUOTE);
- }
-
- $this->trans_->write($num);
-
- if ($this->context_->escapeNum()) {
- $this->trans_->write(self::QUOTE);
- }
- }
-
- private function writeJSONDouble($num)
- {
- $this->context_->write();
-
- if ($this->context_->escapeNum()) {
- $this->trans_->write(self::QUOTE);
- }
-
- $this->trans_->write(json_encode($num));
-
- if ($this->context_->escapeNum()) {
- $this->trans_->write(self::QUOTE);
- }
- }
-
- private function writeJSONBase64($data)
- {
- $this->context_->write();
- $this->trans_->write(self::QUOTE);
- $this->trans_->write(json_encode(base64_encode($data)));
- $this->trans_->write(self::QUOTE);
- }
-
- private function writeJSONObjectStart()
- {
- $this->context_->write();
- $this->trans_->write(self::LBRACE);
- $this->pushContext(new PairContext($this));
- }
-
- private function writeJSONObjectEnd()
- {
- $this->popContext();
- $this->trans_->write(self::RBRACE);
- }
-
- private function writeJSONArrayStart()
- {
- $this->context_->write();
- $this->trans_->write(self::LBRACKET);
- $this->pushContext(new ListContext($this));
- }
-
- private function writeJSONArrayEnd()
- {
- $this->popContext();
- $this->trans_->write(self::RBRACKET);
- }
-
- private function readJSONString($skipContext)
- {
- if (!$skipContext) {
- $this->context_->read();
- }
-
- $jsonString = '';
- $lastChar = null;
- while (true) {
- $ch = $this->reader_->read();
- $jsonString .= $ch;
- if ($ch == self::QUOTE &&
- $lastChar !== NULL &&
- $lastChar !== self::ESCSEQ) {
- break;
- }
- if ($ch == self::ESCSEQ && $lastChar == self::ESCSEQ) {
- $lastChar = self::DOUBLEESC;
- } else {
- $lastChar = $ch;
- }
- }
-
- return json_decode($jsonString);
- }
-
- private function isJSONNumeric($b)
- {
- switch ($b) {
- case '+':
- case '-':
- case '.':
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- case 'E':
- case 'e':
- return true;
- }
-
- return false;
- }
-
- private function readJSONNumericChars()
- {
- $strbld = array();
-
- while (true) {
- $ch = $this->reader_->peek();
-
- if (!$this->isJSONNumeric($ch)) {
- break;
- }
-
- $strbld[] = $this->reader_->read();
- }
-
- return implode("", $strbld);
- }
-
- private function readJSONInteger()
- {
- $this->context_->read();
-
- if ($this->context_->escapeNum()) {
- $this->readJSONSyntaxChar(self::QUOTE);
- }
-
- $str = $this->readJSONNumericChars();
-
- if ($this->context_->escapeNum()) {
- $this->readJSONSyntaxChar(self::QUOTE);
- }
-
- if (!is_numeric($str)) {
- throw new TProtocolException("Invalid data in numeric: " . $str, TProtocolException::INVALID_DATA);
- }
-
- return intval($str);
- }
-
- /**
- * Identical to readJSONInteger but without the final cast.
- * Needed for proper handling of i64 on 32 bit machines. Why a
- * separate function? So we don't have to force the rest of the
- * use cases through the extra conditional.
- */
- private function readJSONIntegerAsString()
- {
- $this->context_->read();
-
- if ($this->context_->escapeNum()) {
- $this->readJSONSyntaxChar(self::QUOTE);
- }
-
- $str = $this->readJSONNumericChars();
-
- if ($this->context_->escapeNum()) {
- $this->readJSONSyntaxChar(self::QUOTE);
- }
-
- if (!is_numeric($str)) {
- throw new TProtocolException("Invalid data in numeric: " . $str, TProtocolException::INVALID_DATA);
- }
-
- return $str;
- }
-
- private function readJSONDouble()
- {
- $this->context_->read();
-
- if (substr($this->reader_->peek(), 0, 1) == self::QUOTE) {
- $arr = $this->readJSONString(true);
-
- if ($arr == "NaN") {
- return NAN;
- } elseif ($arr == "Infinity") {
- return INF;
- } elseif (!$this->context_->escapeNum()) {
- throw new TProtocolException("Numeric data unexpectedly quoted " . $arr,
- TProtocolException::INVALID_DATA);
- }
-
- return floatval($arr);
- } else {
- if ($this->context_->escapeNum()) {
- $this->readJSONSyntaxChar(self::QUOTE);
- }
-
- return floatval($this->readJSONNumericChars());
- }
- }
-
- private function readJSONBase64()
- {
- $arr = $this->readJSONString(false);
- $data = base64_decode($arr, true);
-
- if ($data === false) {
- throw new TProtocolException("Invalid base64 data " . $arr, TProtocolException::INVALID_DATA);
- }
-
- return $data;
- }
-
- private function readJSONObjectStart()
- {
- $this->context_->read();
- $this->readJSONSyntaxChar(self::LBRACE);
- $this->pushContext(new PairContext($this));
- }
-
- private function readJSONObjectEnd()
- {
- $this->readJSONSyntaxChar(self::RBRACE);
- $this->popContext();
- }
-
- private function readJSONArrayStart()
- {
- $this->context_->read();
- $this->readJSONSyntaxChar(self::LBRACKET);
- $this->pushContext(new ListContext($this));
- }
-
- private function readJSONArrayEnd()
- {
- $this->readJSONSyntaxChar(self::RBRACKET);
- $this->popContext();
- }
-
- /**
- * Writes the message header
- *
- * @param string $name Function name
- * @param int $type message type TMessageType::CALL or TMessageType::REPLY
- * @param int $seqid The sequence id of this message
- */
- public function writeMessageBegin($name, $type, $seqid)
- {
- $this->writeJSONArrayStart();
- $this->writeJSONInteger(self::VERSION);
- $this->writeJSONString($name);
- $this->writeJSONInteger($type);
- $this->writeJSONInteger($seqid);
- }
-
- /**
- * Close the message
- */
- public function writeMessageEnd()
- {
- $this->writeJSONArrayEnd();
- }
-
- /**
- * Writes a struct header.
- *
- * @param string $name Struct name
- * @throws TException on write error
- * @return int How many bytes written
- */
- public function writeStructBegin($name)
- {
- $this->writeJSONObjectStart();
- }
-
- /**
- * Close a struct.
- *
- * @throws TException on write error
- * @return int How many bytes written
- */
- public function writeStructEnd()
- {
- $this->writeJSONObjectEnd();
- }
-
- public function writeFieldBegin($fieldName, $fieldType, $fieldId)
- {
- $this->writeJSONInteger($fieldId);
- $this->writeJSONObjectStart();
- $this->writeJSONString($this->getTypeNameForTypeID($fieldType));
- }
-
- public function writeFieldEnd()
- {
- $this->writeJsonObjectEnd();
- }
-
- public function writeFieldStop()
- {
- }
-
- public function writeMapBegin($keyType, $valType, $size)
- {
- $this->writeJSONArrayStart();
- $this->writeJSONString($this->getTypeNameForTypeID($keyType));
- $this->writeJSONString($this->getTypeNameForTypeID($valType));
- $this->writeJSONInteger($size);
- $this->writeJSONObjectStart();
- }
-
- public function writeMapEnd()
- {
- $this->writeJSONObjectEnd();
- $this->writeJSONArrayEnd();
- }
-
- public function writeListBegin($elemType, $size)
- {
- $this->writeJSONArrayStart();
- $this->writeJSONString($this->getTypeNameForTypeID($elemType));
- $this->writeJSONInteger($size);
- }
-
- public function writeListEnd()
- {
- $this->writeJSONArrayEnd();
- }
-
- public function writeSetBegin($elemType, $size)
- {
- $this->writeJSONArrayStart();
- $this->writeJSONString($this->getTypeNameForTypeID($elemType));
- $this->writeJSONInteger($size);
- }
-
- public function writeSetEnd()
- {
- $this->writeJSONArrayEnd();
- }
-
- public function writeBool($bool)
- {
- $this->writeJSONInteger($bool ? 1 : 0);
- }
-
- public function writeByte($byte)
- {
- $this->writeJSONInteger($byte);
- }
-
- public function writeI16($i16)
- {
- $this->writeJSONInteger($i16);
- }
-
- public function writeI32($i32)
- {
- $this->writeJSONInteger($i32);
- }
-
- public function writeI64($i64)
- {
- $this->writeJSONInteger($i64);
- }
-
- public function writeDouble($dub)
- {
- $this->writeJSONDouble($dub);
- }
-
- public function writeString($str)
- {
- $this->writeJSONString($str);
- }
-
- /**
- * Reads the message header
- *
- * @param string $name Function name
- * @param int $type message type TMessageType::CALL or TMessageType::REPLY
- * @parem int $seqid The sequence id of this message
- */
- public function readMessageBegin(&$name, &$type, &$seqid)
- {
- $this->readJSONArrayStart();
-
- if ($this->readJSONInteger() != self::VERSION) {
- throw new TProtocolException("Message contained bad version", TProtocolException::BAD_VERSION);
- }
-
- $name = $this->readJSONString(false);
- $type = $this->readJSONInteger();
- $seqid = $this->readJSONInteger();
-
- return true;
- }
-
- /**
- * Read the close of message
- */
- public function readMessageEnd()
- {
- $this->readJSONArrayEnd();
- }
-
- public function readStructBegin(&$name)
- {
- $this->readJSONObjectStart();
-
- return 0;
- }
-
- public function readStructEnd()
- {
- $this->readJSONObjectEnd();
- }
-
- public function readFieldBegin(&$name, &$fieldType, &$fieldId)
- {
- $ch = $this->reader_->peek();
- $name = "";
-
- if (substr($ch, 0, 1) == self::RBRACE) {
- $fieldType = TType::STOP;
- } else {
- $fieldId = $this->readJSONInteger();
- $this->readJSONObjectStart();
- $fieldType = $this->getTypeIDForTypeName($this->readJSONString(false));
- }
- }
-
- public function readFieldEnd()
- {
- $this->readJSONObjectEnd();
- }
-
- public function readMapBegin(&$keyType, &$valType, &$size)
- {
- $this->readJSONArrayStart();
- $keyType = $this->getTypeIDForTypeName($this->readJSONString(false));
- $valType = $this->getTypeIDForTypeName($this->readJSONString(false));
- $size = $this->readJSONInteger();
- $this->readJSONObjectStart();
- }
-
- public function readMapEnd()
- {
- $this->readJSONObjectEnd();
- $this->readJSONArrayEnd();
- }
-
- public function readListBegin(&$elemType, &$size)
- {
- $this->readJSONArrayStart();
- $elemType = $this->getTypeIDForTypeName($this->readJSONString(false));
- $size = $this->readJSONInteger();
-
- return true;
- }
-
- public function readListEnd()
- {
- $this->readJSONArrayEnd();
- }
-
- public function readSetBegin(&$elemType, &$size)
- {
- $this->readJSONArrayStart();
- $elemType = $this->getTypeIDForTypeName($this->readJSONString(false));
- $size = $this->readJSONInteger();
-
- return true;
- }
-
- public function readSetEnd()
- {
- $this->readJSONArrayEnd();
- }
-
- public function readBool(&$bool)
- {
- $bool = $this->readJSONInteger() == 0 ? false : true;
-
- return true;
- }
-
- public function readByte(&$byte)
- {
- $byte = $this->readJSONInteger();
-
- return true;
- }
-
- public function readI16(&$i16)
- {
- $i16 = $this->readJSONInteger();
-
- return true;
- }
-
- public function readI32(&$i32)
- {
- $i32 = $this->readJSONInteger();
-
- return true;
- }
-
- public function readI64(&$i64)
- {
- if (PHP_INT_SIZE === 4) {
- $i64 = $this->readJSONIntegerAsString();
- } else {
- $i64 = $this->readJSONInteger();
- }
-
- return true;
- }
-
- public function readDouble(&$dub)
- {
- $dub = $this->readJSONDouble();
-
- return true;
- }
-
- public function readString(&$str)
- {
- $str = $this->readJSONString(false);
-
- return true;
- }
-}
http://git-wip-us.apache.org/repos/asf/thrift/blob/bfba370b/lib/php/lib/Thrift/Protocol/TMultiplexedProtocol.php
----------------------------------------------------------------------
diff --git a/lib/php/lib/Thrift/Protocol/TMultiplexedProtocol.php b/lib/php/lib/Thrift/Protocol/TMultiplexedProtocol.php
deleted file mode 100644
index d579c09..0000000
--- a/lib/php/lib/Thrift/Protocol/TMultiplexedProtocol.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- * @package thrift.protocol
- */
-
-namespace Thrift\Protocol;
-
-use Thrift\Type\TMessageType;
-
-/**
- * <code>TMultiplexedProtocol</code> is a protocol-independent concrete decorator
- * that allows a Thrift client to communicate with a multiplexing Thrift server,
- * by prepending the service name to the function name during function calls.
- *
- * @package Thrift\Protocol
- */
-class TMultiplexedProtocol extends TProtocolDecorator
-{
- /**
- * Separator between service name and function name.
- * Should be the same as used at multiplexed Thrift server.
- *
- * @var string
- */
- const SEPARATOR = ":";
-
- /**
- * The name of service.
- *
- * @var string
- */
- private $serviceName_;
-
- /**
- * Constructor of <code>TMultiplexedProtocol</code> class.
- *
- * Wrap the specified protocol, allowing it to be used to communicate with a
- * multiplexing server. The <code>$serviceName</code> is required as it is
- * prepended to the message header so that the multiplexing server can broker
- * the function call to the proper service.
- *
- * @param TProtocol $protocol
- * @param string $serviceName The name of service.
- */
- public function __construct(TProtocol $protocol, $serviceName)
- {
- parent::__construct($protocol);
- $this->serviceName_ = $serviceName;
- }
-
- /**
- * Writes the message header.
- * Prepends the service name to the function name, separated by <code>TMultiplexedProtocol::SEPARATOR</code>.
- *
- * @param string $name Function name.
- * @param int $type Message type.
- * @param int $seqid The sequence id of this message.
- */
- public function writeMessageBegin($name, $type, $seqid)
- {
- if ($type == TMessageType::CALL || $type == TMessageType::ONEWAY) {
- $nameWithService = $this->serviceName_ . self::SEPARATOR . $name;
- parent::writeMessageBegin($nameWithService, $type, $seqid);
- } else {
- parent::writeMessageBegin($name, $type, $seqid);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/thrift/blob/bfba370b/lib/php/lib/Thrift/Protocol/TProtocol.php
----------------------------------------------------------------------
diff --git a/lib/php/lib/Thrift/Protocol/TProtocol.php b/lib/php/lib/Thrift/Protocol/TProtocol.php
deleted file mode 100644
index 0e3bc0d..0000000
--- a/lib/php/lib/Thrift/Protocol/TProtocol.php
+++ /dev/null
@@ -1,352 +0,0 @@
-<?php
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- * @package thrift.protocol
- */
-
-namespace Thrift\Protocol;
-
-use Thrift\Type\TType;
-use Thrift\Exception\TProtocolException;
-
-/**
- * Protocol base class module.
- */
-abstract class TProtocol
-{
- /**
- * Underlying transport
- *
- * @var TTransport
- */
- protected $trans_;
-
- /**
- * Constructor
- */
- protected function __construct($trans)
- {
- $this->trans_ = $trans;
- }
-
- /**
- * Accessor for transport
- *
- * @return TTransport
- */
- public function getTransport()
- {
- return $this->trans_;
- }
-
- /**
- * Writes the message header
- *
- * @param string $name Function name
- * @param int $type message type TMessageType::CALL or TMessageType::REPLY
- * @param int $seqid The sequence id of this message
- */
- abstract public function writeMessageBegin($name, $type, $seqid);
-
- /**
- * Close the message
- */
- abstract public function writeMessageEnd();
-
- /**
- * Writes a struct header.
- *
- * @param string $name Struct name
- * @throws TException on write error
- * @return int How many bytes written
- */
- abstract public function writeStructBegin($name);
-
- /**
- * Close a struct.
- *
- * @throws TException on write error
- * @return int How many bytes written
- */
- abstract public function writeStructEnd();
-
- /*
- * Starts a field.
- *
- * @param string $name Field name
- * @param int $type Field type
- * @param int $fid Field id
- * @throws TException on write error
- * @return int How many bytes written
- */
- abstract public function writeFieldBegin($fieldName, $fieldType, $fieldId);
-
- abstract public function writeFieldEnd();
-
- abstract public function writeFieldStop();
-
- abstract public function writeMapBegin($keyType, $valType, $size);
-
- abstract public function writeMapEnd();
-
- abstract public function writeListBegin($elemType, $size);
-
- abstract public function writeListEnd();
-
- abstract public function writeSetBegin($elemType, $size);
-
- abstract public function writeSetEnd();
-
- abstract public function writeBool($bool);
-
- abstract public function writeByte($byte);
-
- abstract public function writeI16($i16);
-
- abstract public function writeI32($i32);
-
- abstract public function writeI64($i64);
-
- abstract public function writeDouble($dub);
-
- abstract public function writeString($str);
-
- /**
- * Reads the message header
- *
- * @param string $name Function name
- * @param int $type message type TMessageType::CALL or TMessageType::REPLY
- * @parem int $seqid The sequence id of this message
- */
- abstract public function readMessageBegin(&$name, &$type, &$seqid);
-
- /**
- * Read the close of message
- */
- abstract public function readMessageEnd();
-
- abstract public function readStructBegin(&$name);
-
- abstract public function readStructEnd();
-
- abstract public function readFieldBegin(&$name, &$fieldType, &$fieldId);
-
- abstract public function readFieldEnd();
-
- abstract public function readMapBegin(&$keyType, &$valType, &$size);
-
- abstract public function readMapEnd();
-
- abstract public function readListBegin(&$elemType, &$size);
-
- abstract public function readListEnd();
-
- abstract public function readSetBegin(&$elemType, &$size);
-
- abstract public function readSetEnd();
-
- abstract public function readBool(&$bool);
-
- abstract public function readByte(&$byte);
-
- abstract public function readI16(&$i16);
-
- abstract public function readI32(&$i32);
-
- abstract public function readI64(&$i64);
-
- abstract public function readDouble(&$dub);
-
- abstract public function readString(&$str);
-
- /**
- * The skip function is a utility to parse over unrecognized date without
- * causing corruption.
- *
- * @param TType $type What type is it
- */
- public function skip($type)
- {
- switch ($type) {
- case TType::BOOL:
- return $this->readBool($bool);
- case TType::BYTE:
- return $this->readByte($byte);
- case TType::I16:
- return $this->readI16($i16);
- case TType::I32:
- return $this->readI32($i32);
- case TType::I64:
- return $this->readI64($i64);
- case TType::DOUBLE:
- return $this->readDouble($dub);
- case TType::STRING:
- return $this->readString($str);
- case TType::STRUCT:
- {
- $result = $this->readStructBegin($name);
- while (true) {
- $result += $this->readFieldBegin($name, $ftype, $fid);
- if ($ftype == TType::STOP) {
- break;
- }
- $result += $this->skip($ftype);
- $result += $this->readFieldEnd();
- }
- $result += $this->readStructEnd();
-
- return $result;
- }
- case TType::MAP:
- {
- $result = $this->readMapBegin($keyType, $valType, $size);
- for ($i = 0; $i < $size; $i++) {
- $result += $this->skip($keyType);
- $result += $this->skip($valType);
- }
- $result += $this->readMapEnd();
-
- return $result;
- }
- case TType::SET:
- {
- $result = $this->readSetBegin($elemType, $size);
- for ($i = 0; $i < $size; $i++) {
- $result += $this->skip($elemType);
- }
- $result += $this->readSetEnd();
-
- return $result;
- }
- case TType::LST:
- {
- $result = $this->readListBegin($elemType, $size);
- for ($i = 0; $i < $size; $i++) {
- $result += $this->skip($elemType);
- }
- $result += $this->readListEnd();
-
- return $result;
- }
- default:
- throw new TProtocolException('Unknown field type: '.$type,
- TProtocolException::INVALID_DATA);
- }
- }
-
- /**
- * Utility for skipping binary data
- *
- * @param TTransport $itrans TTransport object
- * @param int $type Field type
- */
- public static function skipBinary($itrans, $type)
- {
- switch ($type) {
- case TType::BOOL:
- return $itrans->readAll(1);
- case TType::BYTE:
- return $itrans->readAll(1);
- case TType::I16:
- return $itrans->readAll(2);
- case TType::I32:
- return $itrans->readAll(4);
- case TType::I64:
- return $itrans->readAll(8);
- case TType::DOUBLE:
- return $itrans->readAll(8);
- case TType::STRING:
- $len = unpack('N', $itrans->readAll(4));
- $len = $len[1];
- if ($len > 0x7fffffff) {
- $len = 0 - (($len - 1) ^ 0xffffffff);
- }
-
- return 4 + $itrans->readAll($len);
- case TType::STRUCT:
- {
- $result = 0;
- while (true) {
- $ftype = 0;
- $fid = 0;
- $data = $itrans->readAll(1);
- $arr = unpack('c', $data);
- $ftype = $arr[1];
- if ($ftype == TType::STOP) {
- break;
- }
- // I16 field id
- $result += $itrans->readAll(2);
- $result += self::skipBinary($itrans, $ftype);
- }
-
- return $result;
- }
- case TType::MAP:
- {
- // Ktype
- $data = $itrans->readAll(1);
- $arr = unpack('c', $data);
- $ktype = $arr[1];
- // Vtype
- $data = $itrans->readAll(1);
- $arr = unpack('c', $data);
- $vtype = $arr[1];
- // Size
- $data = $itrans->readAll(4);
- $arr = unpack('N', $data);
- $size = $arr[1];
- if ($size > 0x7fffffff) {
- $size = 0 - (($size - 1) ^ 0xffffffff);
- }
- $result = 6;
- for ($i = 0; $i < $size; $i++) {
- $result += self::skipBinary($itrans, $ktype);
- $result += self::skipBinary($itrans, $vtype);
- }
-
- return $result;
- }
- case TType::SET:
- case TType::LST:
- {
- // Vtype
- $data = $itrans->readAll(1);
- $arr = unpack('c', $data);
- $vtype = $arr[1];
- // Size
- $data = $itrans->readAll(4);
- $arr = unpack('N', $data);
- $size = $arr[1];
- if ($size > 0x7fffffff) {
- $size = 0 - (($size - 1) ^ 0xffffffff);
- }
- $result = 5;
- for ($i = 0; $i < $size; $i++) {
- $result += self::skipBinary($itrans, $vtype);
- }
-
- return $result;
- }
- default:
- throw new TProtocolException('Unknown field type: '.$type,
- TProtocolException::INVALID_DATA);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/thrift/blob/bfba370b/lib/php/lib/Thrift/Protocol/TProtocolDecorator.php
----------------------------------------------------------------------
diff --git a/lib/php/lib/Thrift/Protocol/TProtocolDecorator.php b/lib/php/lib/Thrift/Protocol/TProtocolDecorator.php
deleted file mode 100644
index c08c4d5..0000000
--- a/lib/php/lib/Thrift/Protocol/TProtocolDecorator.php
+++ /dev/null
@@ -1,284 +0,0 @@
-<?php
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- * @package thrift.protocol
- */
-
-namespace Thrift\Protocol;
-use Thrift\Exception\TException;
-
-/**
- * <code>TProtocolDecorator</code> forwards all requests to an enclosed
- * <code>TProtocol</code> instance, providing a way to author concise
- * concrete decorator subclasses. While it has no abstract methods, it
- * is marked abstract as a reminder that by itself, it does not modify
- * the behaviour of the enclosed <code>TProtocol</code>.
- *
- * @package Thrift\Protocol
- */
-abstract class TProtocolDecorator extends TProtocol
-{
- /**
- * Instance of protocol, to which all operations will be forwarded.
- *
- * @var TProtocol
- */
- private $concreteProtocol_;
-
- /**
- * Constructor of <code>TProtocolDecorator</code> class.
- * Encloses the specified protocol.
- *
- * @param TProtocol $protocol All operations will be forward to this instance. Must be non-null.
- */
- protected function __construct(TProtocol $protocol)
- {
- parent::__construct($protocol->getTransport());
- $this->concreteProtocol_ = $protocol;
- }
-
- /**
- * Writes the message header.
- *
- * @param string $name Function name
- * @param int $type message type TMessageType::CALL or TMessageType::REPLY
- * @param int $seqid The sequence id of this message
- */
- public function writeMessageBegin($name, $type, $seqid)
- {
- return $this->concreteProtocol_->writeMessageBegin($name, $type, $seqid);
- }
-
- /**
- * Closes the message.
- */
- public function writeMessageEnd()
- {
- return $this->concreteProtocol_->writeMessageEnd();
- }
-
- /**
- * Writes a struct header.
- *
- * @param string $name Struct name
- *
- * @throws TException on write error
- * @return int How many bytes written
- */
- public function writeStructBegin($name)
- {
- return $this->concreteProtocol_->writeStructBegin($name);
- }
-
- /**
- * Close a struct.
- *
- * @throws TException on write error
- * @return int How many bytes written
- */
- public function writeStructEnd()
- {
- return $this->concreteProtocol_->writeStructEnd();
- }
-
- public function writeFieldBegin($fieldName, $fieldType, $fieldId)
- {
- return $this->concreteProtocol_->writeFieldBegin($fieldName, $fieldType, $fieldId);
- }
-
- public function writeFieldEnd()
- {
- return $this->concreteProtocol_->writeFieldEnd();
- }
-
- public function writeFieldStop()
- {
- return $this->concreteProtocol_->writeFieldStop();
- }
-
- public function writeMapBegin($keyType, $valType, $size)
- {
- return $this->concreteProtocol_->writeMapBegin($keyType, $valType, $size);
- }
-
- public function writeMapEnd()
- {
- return $this->concreteProtocol_->writeMapEnd();
- }
-
- public function writeListBegin($elemType, $size)
- {
- return $this->concreteProtocol_->writeListBegin($elemType, $size);
- }
-
- public function writeListEnd()
- {
- return $this->concreteProtocol_->writeListEnd();
- }
-
- public function writeSetBegin($elemType, $size)
- {
- return $this->concreteProtocol_->writeSetBegin($elemType, $size);
- }
-
- public function writeSetEnd()
- {
- return $this->concreteProtocol_->writeSetEnd();
- }
-
- public function writeBool($bool)
- {
- return $this->concreteProtocol_->writeBool($bool);
- }
-
- public function writeByte($byte)
- {
- return $this->concreteProtocol_->writeByte($byte);
- }
-
- public function writeI16($i16)
- {
- return $this->concreteProtocol_->writeI16($i16);
- }
-
- public function writeI32($i32)
- {
- return $this->concreteProtocol_->writeI32($i32);
- }
-
- public function writeI64($i64)
- {
- return $this->concreteProtocol_->writeI64($i64);
- }
-
- public function writeDouble($dub)
- {
- return $this->concreteProtocol_->writeDouble($dub);
- }
-
- public function writeString($str)
- {
- return $this->concreteProtocol_->writeString($str);
- }
-
- /**
- * Reads the message header
- *
- * @param string $name Function name
- * @param int $type message type TMessageType::CALL or TMessageType::REPLY
- * @param int $seqid The sequence id of this message
- */
- public function readMessageBegin(&$name, &$type, &$seqid)
- {
- return $this->concreteProtocol_->readMessageBegin($name, $type, $seqid);
- }
-
- /**
- * Read the close of message
- */
- public function readMessageEnd()
- {
- return $this->concreteProtocol_->readMessageEnd();
- }
-
- public function readStructBegin(&$name)
- {
- return $this->concreteProtocol_->readStructBegin($name);
- }
-
- public function readStructEnd()
- {
- return $this->concreteProtocol_->readStructEnd();
- }
-
- public function readFieldBegin(&$name, &$fieldType, &$fieldId)
- {
- return $this->concreteProtocol_->readFieldBegin($name, $fieldType, $fieldId);
- }
-
- public function readFieldEnd()
- {
- return $this->concreteProtocol_->readFieldEnd();
- }
-
- public function readMapBegin(&$keyType, &$valType, &$size)
- {
- $this->concreteProtocol_->readMapBegin($keyType, $valType, $size);
- }
-
- public function readMapEnd()
- {
- return $this->concreteProtocol_->readMapEnd();
- }
-
- public function readListBegin(&$elemType, &$size)
- {
- $this->concreteProtocol_->readListBegin($elemType, $size);
- }
-
- public function readListEnd()
- {
- return $this->concreteProtocol_->readListEnd();
- }
-
- public function readSetBegin(&$elemType, &$size)
- {
- return $this->concreteProtocol_->readSetBegin($elemType, $size);
- }
-
- public function readSetEnd()
- {
- return $this->concreteProtocol_->readSetEnd();
- }
-
- public function readBool(&$bool)
- {
- return $this->concreteProtocol_->readBool($bool);
- }
-
- public function readByte(&$byte)
- {
- return $this->concreteProtocol_->readByte($byte);
- }
-
- public function readI16(&$i16)
- {
- return $this->concreteProtocol_->readI16($i16);
- }
-
- public function readI32(&$i32)
- {
- return $this->concreteProtocol_->readI32($i32);
- }
-
- public function readI64(&$i64)
- {
- return $this->concreteProtocol_->readI64($i64);
- }
-
- public function readDouble(&$dub)
- {
- return $this->concreteProtocol_->readDouble($dub);
- }
-
- public function readString(&$str)
- {
- return $this->concreteProtocol_->readString($str);
- }
-}
http://git-wip-us.apache.org/repos/asf/thrift/blob/bfba370b/lib/php/lib/Thrift/Protocol/TSimpleJSONProtocol.php
----------------------------------------------------------------------
diff --git a/lib/php/lib/Thrift/Protocol/TSimpleJSONProtocol.php b/lib/php/lib/Thrift/Protocol/TSimpleJSONProtocol.php
deleted file mode 100644
index 9cf90bd..0000000
--- a/lib/php/lib/Thrift/Protocol/TSimpleJSONProtocol.php
+++ /dev/null
@@ -1,371 +0,0 @@
-<?php
-
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- * @package thrift.protocol
- */
-
-namespace Thrift\Protocol;
-
-use Thrift\Exception\TException;
-use Thrift\Exception\TProtocolException;
-use Thrift\Protocol\SimpleJSON\Context;
-use Thrift\Protocol\SimpleJSON\ListContext;
-use Thrift\Protocol\SimpleJSON\StructContext;
-use Thrift\Protocol\SimpleJSON\MapContext;
-use Thrift\Protocol\SimpleJSON\CollectionMapKeyException;
-
-/**
- * SimpleJSON implementation of thrift protocol, ported from Java.
- */
-class TSimpleJSONProtocol extends TProtocol
-{
- const COMMA = ',';
- const COLON = ':';
- const LBRACE = '{';
- const RBRACE = '}';
- const LBRACKET = '[';
- const RBRACKET = ']';
- const QUOTE = '"';
-
- const NAME_MAP = "map";
- const NAME_LIST = "lst";
- const NAME_SET = "set";
-
- protected $writeContext_ = null;
- protected $writeContextStack_ = [];
-
- /**
- * Push a new write context onto the stack.
- */
- protected function pushWriteContext(Context $c) {
- $this->writeContextStack_[] = $this->writeContext_;
- $this->writeContext_ = $c;
- }
-
- /**
- * Pop the last write context off the stack
- */
- protected function popWriteContext() {
- $this->writeContext_ = array_pop($this->writeContextStack_);
- }
-
- /**
- * Used to make sure that we are not encountering a map whose keys are containers
- */
- protected function assertContextIsNotMapKey($invalidKeyType) {
- if ($this->writeContext_->isMapKey()) {
- throw new CollectionMapKeyException(
- "Cannot serialize a map with keys that are of type " .
- $invalidKeyType
- );
- }
- }
-
- private function writeJSONString($b)
- {
- $this->writeContext_->write();
-
- $this->trans_->write(json_encode((string)$b));
- }
-
- private function writeJSONInteger($num)
- {
- $isMapKey = $this->writeContext_->isMapKey();
-
- $this->writeContext_->write();
-
- if ($isMapKey) {
- $this->trans_->write(self::QUOTE);
- }
-
- $this->trans_->write((int)$num);
-
- if ($isMapKey) {
- $this->trans_->write(self::QUOTE);
- }
- }
-
- private function writeJSONDouble($num)
- {
- $isMapKey = $this->writeContext_->isMapKey();
-
- $this->writeContext_->write();
-
- if ($isMapKey) {
- $this->trans_->write(self::QUOTE);
- }
-
- $this->trans_->write(json_encode((float)$num));
-
- if ($isMapKey) {
- $this->trans_->write(self::QUOTE);
- }
- }
-
- /**
- * Constructor
- */
- public function __construct($trans)
- {
- parent::__construct($trans);
- $this->writeContext_ = new Context();
- }
-
- /**
- * Writes the message header
- *
- * @param string $name Function name
- * @param int $type message type TMessageType::CALL or TMessageType::REPLY
- * @param int $seqid The sequence id of this message
- */
- public function writeMessageBegin($name, $type, $seqid)
- {
- $this->trans_->write(self::LBRACKET);
- $this->pushWriteContext(new ListContext($this));
- $this->writeJSONString($name);
- $this->writeJSONInteger($type);
- $this->writeJSONInteger($seqid);
- }
-
- /**
- * Close the message
- */
- public function writeMessageEnd()
- {
- $this->popWriteContext();
- $this->trans_->write(self::RBRACKET);
- }
-
- /**
- * Writes a struct header.
- *
- * @param string $name Struct name
- */
- public function writeStructBegin($name)
- {
- $this->writeContext_->write();
- $this->trans_->write(self::LBRACE);
- $this->pushWriteContext(new StructContext($this));
- }
-
- /**
- * Close a struct.
- */
- public function writeStructEnd()
- {
- $this->popWriteContext();
- $this->trans_->write(self::RBRACE);
- }
-
- public function writeFieldBegin($fieldName, $fieldType, $fieldId)
- {
- $this->writeJSONString($fieldName);
- }
-
- public function writeFieldEnd()
- {
- }
-
- public function writeFieldStop()
- {
- }
-
- public function writeMapBegin($keyType, $valType, $size)
- {
- $this->assertContextIsNotMapKey(self::NAME_MAP);
- $this->writeContext_->write();
- $this->trans_->write(self::LBRACE);
- $this->pushWriteContext(new MapContext($this));
- }
-
- public function writeMapEnd()
- {
- $this->popWriteContext();
- $this->trans_->write(self::RBRACE);
- }
-
- public function writeListBegin($elemType, $size)
- {
- $this->assertContextIsNotMapKey(self::NAME_LIST);
- $this->writeContext_->write();
- $this->trans_->write(self::LBRACKET);
- $this->pushWriteContext(new ListContext($this));
- // No metadata!
- }
-
- public function writeListEnd()
- {
- $this->popWriteContext();
- $this->trans_->write(self::RBRACKET);
- }
-
- public function writeSetBegin($elemType, $size)
- {
- $this->assertContextIsNotMapKey(self::NAME_SET);
- $this->writeContext_->write();
- $this->trans_->write(self::LBRACKET);
- $this->pushWriteContext(new ListContext($this));
- // No metadata!
- }
-
- public function writeSetEnd()
- {
- $this->popWriteContext();
- $this->trans_->write(self::RBRACKET);
- }
-
- public function writeBool($bool)
- {
- $this->writeJSONInteger($bool ? 1 : 0);
- }
-
- public function writeByte($byte)
- {
- $this->writeJSONInteger($byte);
- }
-
- public function writeI16($i16)
- {
- $this->writeJSONInteger($i16);
- }
-
- public function writeI32($i32)
- {
- $this->writeJSONInteger($i32);
- }
-
- public function writeI64($i64)
- {
- $this->writeJSONInteger($i64);
- }
-
- public function writeDouble($dub)
- {
- $this->writeJSONDouble($dub);
- }
-
- public function writeString($str)
- {
- $this->writeJSONString($str);
- }
-
- /**
- * Reading methods.
- *
- * simplejson is not meant to be read back into thrift
- * - see http://wiki.apache.org/thrift/ThriftUsageJava
- * - use JSON instead
- */
-
- public function readMessageBegin(&$name, &$type, &$seqid)
- {
- throw new TException("Not implemented");
- }
-
- public function readMessageEnd()
- {
- throw new TException("Not implemented");
- }
-
- public function readStructBegin(&$name)
- {
- throw new TException("Not implemented");
- }
-
- public function readStructEnd()
- {
- throw new TException("Not implemented");
- }
-
- public function readFieldBegin(&$name, &$fieldType, &$fieldId)
- {
- throw new TException("Not implemented");
- }
-
- public function readFieldEnd()
- {
- throw new TException("Not implemented");
- }
-
- public function readMapBegin(&$keyType, &$valType, &$size)
- {
- throw new TException("Not implemented");
- }
-
- public function readMapEnd()
- {
- throw new TException("Not implemented");
- }
-
- public function readListBegin(&$elemType, &$size)
- {
- throw new TException("Not implemented");
- }
-
- public function readListEnd()
- {
- throw new TException("Not implemented");
- }
-
- public function readSetBegin(&$elemType, &$size)
- {
- throw new TException("Not implemented");
- }
-
- public function readSetEnd()
- {
- throw new TException("Not implemented");
- }
-
- public function readBool(&$bool)
- {
- throw new TException("Not implemented");
- }
-
- public function readByte(&$byte)
- {
- throw new TException("Not implemented");
- }
-
- public function readI16(&$i16)
- {
- throw new TException("Not implemented");
- }
-
- public function readI32(&$i32)
- {
- throw new TException("Not implemented");
- }
-
- public function readI64(&$i64)
- {
- throw new TException("Not implemented");
- }
-
- public function readDouble(&$dub)
- {
- throw new TException("Not implemented");
- }
-
- public function readString(&$str)
- {
- throw new TException("Not implemented");
- }
-}
http://git-wip-us.apache.org/repos/asf/thrift/blob/bfba370b/lib/php/lib/Thrift/Serializer/TBinarySerializer.php
----------------------------------------------------------------------
diff --git a/lib/php/lib/Thrift/Serializer/TBinarySerializer.php b/lib/php/lib/Thrift/Serializer/TBinarySerializer.php
deleted file mode 100644
index aa2f71b..0000000
--- a/lib/php/lib/Thrift/Serializer/TBinarySerializer.php
+++ /dev/null
@@ -1,85 +0,0 @@
-<?php
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- * @package thrift.protocol
- * @author: rmarin (marin.radu@facebook.com)
- */
-
-namespace Thrift\Serializer;
-
-use Thrift\Transport\TMemoryBuffer;
-use Thrift\Protocol\TBinaryProtocolAccelerated;
-use Thrift\Type\TMessageType;
-
-/**
- * Utility class for serializing and deserializing
- * a thrift object using TBinaryProtocolAccelerated.
- */
-class TBinarySerializer
-{
- // NOTE(rmarin): Because thrift_protocol_write_binary
- // adds a begin message prefix, you cannot specify
- // a transport in which to serialize an object. It has to
- // be a string. Otherwise we will break the compatibility with
- // normal deserialization.
- public static function serialize($object)
- {
- $transport = new TMemoryBuffer();
- $protocol = new TBinaryProtocolAccelerated($transport);
- if (function_exists('thrift_protocol_write_binary')) {
- thrift_protocol_write_binary($protocol, $object->getName(),
- TMessageType::REPLY, $object,
- 0, $protocol->isStrictWrite());
-
- $protocol->readMessageBegin($unused_name, $unused_type,
- $unused_seqid);
- } else {
- $object->write($protocol);
- }
- $protocol->getTransport()->flush();
-
- return $transport->getBuffer();
- }
-
- public static function deserialize($string_object, $class_name, $buffer_size = 8192)
- {
- $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(),
- $buffer_size);
- } else {
- $transport->write($string_object);
- $object = new $class_name();
- $object->read($protocol);
-
- return $object;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/thrift/blob/bfba370b/lib/php/lib/Thrift/Server/TForkingServer.php
----------------------------------------------------------------------
diff --git a/lib/php/lib/Thrift/Server/TForkingServer.php b/lib/php/lib/Thrift/Server/TForkingServer.php
deleted file mode 100644
index 7f6e541..0000000
--- a/lib/php/lib/Thrift/Server/TForkingServer.php
+++ /dev/null
@@ -1,120 +0,0 @@
-<?php
-
-namespace Thrift\Server;
-
-use Thrift\Transport\TTransport;
-use Thrift\Exception\TException;
-use Thrift\Exception\TTransportException;
-
-/**
- * A forking implementation of a Thrift server.
- *
- * @package thrift.server
- */
-class TForkingServer extends TServer
-{
- /**
- * Flag for the main serving loop
- *
- * @var bool
- */
- private $stop_ = false;
-
- /**
- * List of children.
- *
- * @var array
- */
- protected $children_ = array();
-
- /**
- * Listens for new client using the supplied
- * transport. We fork when a new connection
- * arrives.
- *
- * @return void
- */
- public function serve()
- {
- $this->transport_->listen();
-
- while (!$this->stop_) {
- try {
- $transport = $this->transport_->accept();
-
- if ($transport != null) {
- $pid = pcntl_fork();
-
- if ($pid > 0) {
- $this->handleParent($transport, $pid);
- } elseif ($pid === 0) {
- $this->handleChild($transport);
- } else {
- throw new TException('Failed to fork');
- }
- }
- } catch (TTransportException $e) { }
-
- $this->collectChildren();
- }
- }
-
- /**
- * Code run by the parent
- *
- * @param TTransport $transport
- * @param int $pid
- * @return void
- */
- private function handleParent(TTransport $transport, $pid)
- {
- $this->children_[$pid] = $transport;
- }
-
- /**
- * Code run by the child.
- *
- * @param TTransport $transport
- * @return void
- */
- private function handleChild(TTransport $transport)
- {
- try {
- $inputTransport = $this->inputTransportFactory_->getTransport($transport);
- $outputTransport = $this->outputTransportFactory_->getTransport($transport);
- $inputProtocol = $this->inputProtocolFactory_->getProtocol($inputTransport);
- $outputProtocol = $this->outputProtocolFactory_->getProtocol($outputTransport);
- while ($this->processor_->process($inputProtocol, $outputProtocol)) { }
- @$transport->close();
- } catch (TTransportException $e) { }
-
- exit(0);
- }
-
- /**
- * Collects any children we may have
- *
- * @return void
- */
- private function collectChildren()
- {
- foreach ($this->children_ as $pid => $transport) {
- if (pcntl_waitpid($pid, $status, WNOHANG) > 0) {
- unset($this->children_[$pid]);
- if ($transport) @$transport->close();
- }
- }
- }
-
- /**
- * Stops the server running. Kills the transport
- * and then stops the main serving loop
- *
- * @return void
- */
- public function stop()
- {
- $this->transport_->close();
- $this->stop_ = true;
- }
-}
http://git-wip-us.apache.org/repos/asf/thrift/blob/bfba370b/lib/php/lib/Thrift/Server/TSSLServerSocket.php
----------------------------------------------------------------------
diff --git a/lib/php/lib/Thrift/Server/TSSLServerSocket.php b/lib/php/lib/Thrift/Server/TSSLServerSocket.php
deleted file mode 100644
index dfc4704..0000000
--- a/lib/php/lib/Thrift/Server/TSSLServerSocket.php
+++ /dev/null
@@ -1,94 +0,0 @@
-<?php
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- *
- */
-
-namespace Thrift\Server;
-
-use Thrift\Transport\TSSLSocket;
-
-/**
- * Socket implementation of a server agent.
- *
- * @package thrift.transport
- */
-class TSSLServerSocket extends TServerSocket
-{
- /**
- * Remote port
- *
- * @var resource
- */
- protected $context_ = null;
-
- /**
- * ServerSocket constructor
- *
- * @param string $host Host to listen on
- * @param int $port Port to listen on
- * @param resource $context Stream context
- * @return void
- */
- public function __construct($host = 'localhost', $port = 9090, $context = null)
- {
- $ssl_host = $this->getSSLHost($host);
- parent::__construct($ssl_host, $port);
- $this->context_ = $context;
- }
-
- public function getSSLHost($host)
- {
- $transport_protocol_loc = strpos($host, "://");
- if ($transport_protocol_loc === false) {
- $host = 'ssl://'.$host;
- }
- return $host;
- }
-
- /**
- * Opens a new socket server handle
- *
- * @return void
- */
- public function listen()
- {
- $this->listener_ = @stream_socket_server(
- $this->host_ . ':' . $this->port_,
- $errno,
- $errstr,
- STREAM_SERVER_BIND|STREAM_SERVER_LISTEN,
- $this->context_);
- }
-
- /**
- * Implementation of accept. If not client is accepted in the given time
- *
- * @return TSocket
- */
- protected function acceptImpl()
- {
- $handle = @stream_socket_accept($this->listener_, $this->acceptTimeout_ / 1000.0);
- if(!$handle) return null;
-
- $socket = new TSSLSocket();
- $socket->setHandle($handle);
-
- return $socket;
- }
-}
http://git-wip-us.apache.org/repos/asf/thrift/blob/bfba370b/lib/php/lib/Thrift/Server/TServer.php
----------------------------------------------------------------------
diff --git a/lib/php/lib/Thrift/Server/TServer.php b/lib/php/lib/Thrift/Server/TServer.php
deleted file mode 100644
index f4d76cc..0000000
--- a/lib/php/lib/Thrift/Server/TServer.php
+++ /dev/null
@@ -1,100 +0,0 @@
-<?php
-
-namespace Thrift\Server;
-
-use Thrift\Factory\TTransportFactory;
-use Thrift\Factory\TProtocolFactory;
-
-/**
- * Generic class for a Thrift server.
- *
- * @package thrift.server
- */
-abstract class TServer
-{
- /**
- * Processor to handle new clients
- *
- * @var TProcessor
- */
- protected $processor_;
-
- /**
- * Server transport to be used for listening
- * and accepting new clients
- *
- * @var TServerTransport
- */
- protected $transport_;
-
- /**
- * Input transport factory
- *
- * @var TTransportFactory
- */
- protected $inputTransportFactory_;
-
- /**
- * Output transport factory
- *
- * @var TTransportFactory
- */
- protected $outputTransportFactory_;
-
- /**
- * Input protocol factory
- *
- * @var TProtocolFactory
- */
- protected $inputProtocolFactory_;
-
- /**
- * Output protocol factory
- *
- * @var TProtocolFactory
- */
- protected $outputProtocolFactory_;
-
- /**
- * Sets up all the factories, etc
- *
- * @param object $processor
- * @param TServerTransport $transport
- * @param TTransportFactory $inputTransportFactory
- * @param TTransportFactory $outputTransportFactory
- * @param TProtocolFactory $inputProtocolFactory
- * @param TProtocolFactory $outputProtocolFactory
- * @return void
- */
- public function __construct($processor,
- TServerTransport $transport,
- TTransportFactory $inputTransportFactory,
- TTransportFactory $outputTransportFactory,
- TProtocolFactory $inputProtocolFactory,
- TProtocolFactory $outputProtocolFactory) {
- $this->processor_ = $processor;
- $this->transport_ = $transport;
- $this->inputTransportFactory_ = $inputTransportFactory;
- $this->outputTransportFactory_ = $outputTransportFactory;
- $this->inputProtocolFactory_ = $inputProtocolFactory;
- $this->outputProtocolFactory_ = $outputProtocolFactory;
- }
-
- /**
- * Serves the server. This should never return
- * unless a problem permits it to do so or it
- * is interrupted intentionally
- *
- * @abstract
- * @return void
- */
- abstract public function serve();
-
- /**
- * Stops the server serving
- *
- * @abstract
- * @return void
- */
- abstract public function stop();
-}