http://git-wip-us.apache.org/repos/asf/airavata/blob/b61cfcd3/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Exception/TException.php ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Exception/TException.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Exception/TException.php deleted file mode 100644 index 8e8cd28..0000000 --- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Exception/TException.php +++ /dev/null @@ -1,369 +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 - */ - -namespace Thrift\Exception; - -use Thrift\Type\TType; -use Thrift\Base\TBase; - -/** - * NOTE(mcslee): This currently contains a ton of duplicated code from TBase - * because we need to save CPU cycles and this is not yet in an extension. - * Ideally we'd multiply-inherit TException from both Exception and Base, but - * that's not possible in PHP and there are no modules either, so for now we - * apologetically take a trip to HackTown. - * - * Can be called with standard Exception constructor (message, code) or with - * Thrift Base object constructor (spec, vals). - * - * @param mixed $p1 Message (string) or type-spec (array) - * @param mixed $p2 Code (integer) or values (array) - */ -class TException extends \Exception { - function __construct($p1=null, $p2=0) { - if (is_array($p1) && is_array($p2)) { - $spec = $p1; - $vals = $p2; - foreach ($spec as $fid => $fspec) { - $var = $fspec['var']; - if (isset($vals[$var])) { - $this->$var = $vals[$var]; - } - } - } else { - parent::__construct($p1, $p2); - } - } - - static $tmethod = array(TType::BOOL => 'Bool', - TType::BYTE => 'Byte', - TType::I16 => 'I16', - TType::I32 => 'I32', - TType::I64 => 'I64', - TType::DOUBLE => 'Double', - TType::STRING => 'String'); - - private function _readMap(&$var, $spec, $input) { - $xfer = 0; - $ktype = $spec['ktype']; - $vtype = $spec['vtype']; - $kread = $vread = null; - if (isset(TBase::$tmethod[$ktype])) { - $kread = 'read'.TBase::$tmethod[$ktype]; - } else { - $kspec = $spec['key']; - } - if (isset(TBase::$tmethod[$vtype])) { - $vread = 'read'.TBase::$tmethod[$vtype]; - } else { - $vspec = $spec['val']; - } - $var = array(); - $_ktype = $_vtype = $size = 0; - $xfer += $input->readMapBegin($_ktype, $_vtype, $size); - for ($i = 0; $i < $size; ++$i) { - $key = $val = null; - if ($kread !== null) { - $xfer += $input->$kread($key); - } else { - switch ($ktype) { - case TType::STRUCT: - $class = $kspec['class']; - $key = new $class(); - $xfer += $key->read($input); - break; - case TType::MAP: - $xfer += $this->_readMap($key, $kspec, $input); - break; - case TType::LST: - $xfer += $this->_readList($key, $kspec, $input, false); - break; - case TType::SET: - $xfer += $this->_readList($key, $kspec, $input, true); - break; - } - } - if ($vread !== null) { - $xfer += $input->$vread($val); - } else { - switch ($vtype) { - case TType::STRUCT: - $class = $vspec['class']; - $val = new $class(); - $xfer += $val->read($input); - break; - case TType::MAP: - $xfer += $this->_readMap($val, $vspec, $input); - break; - case TType::LST: - $xfer += $this->_readList($val, $vspec, $input, false); - break; - case TType::SET: - $xfer += $this->_readList($val, $vspec, $input, true); - break; - } - } - $var[$key] = $val; - } - $xfer += $input->readMapEnd(); - return $xfer; - } - - private function _readList(&$var, $spec, $input, $set=false) { - $xfer = 0; - $etype = $spec['etype']; - $eread = $vread = null; - if (isset(TBase::$tmethod[$etype])) { - $eread = 'read'.TBase::$tmethod[$etype]; - } else { - $espec = $spec['elem']; - } - $var = array(); - $_etype = $size = 0; - if ($set) { - $xfer += $input->readSetBegin($_etype, $size); - } else { - $xfer += $input->readListBegin($_etype, $size); - } - for ($i = 0; $i < $size; ++$i) { - $elem = null; - if ($eread !== null) { - $xfer += $input->$eread($elem); - } else { - $espec = $spec['elem']; - switch ($etype) { - case TType::STRUCT: - $class = $espec['class']; - $elem = new $class(); - $xfer += $elem->read($input); - break; - case TType::MAP: - $xfer += $this->_readMap($elem, $espec, $input); - break; - case TType::LST: - $xfer += $this->_readList($elem, $espec, $input, false); - break; - case TType::SET: - $xfer += $this->_readList($elem, $espec, $input, true); - break; - } - } - if ($set) { - $var[$elem] = true; - } else { - $var []= $elem; - } - } - if ($set) { - $xfer += $input->readSetEnd(); - } else { - $xfer += $input->readListEnd(); - } - return $xfer; - } - - protected function _read($class, $spec, $input) { - $xfer = 0; - $fname = null; - $ftype = 0; - $fid = 0; - $xfer += $input->readStructBegin($fname); - while (true) { - $xfer += $input->readFieldBegin($fname, $ftype, $fid); - if ($ftype == TType::STOP) { - break; - } - if (isset($spec[$fid])) { - $fspec = $spec[$fid]; - $var = $fspec['var']; - if ($ftype == $fspec['type']) { - $xfer = 0; - if (isset(TBase::$tmethod[$ftype])) { - $func = 'read'.TBase::$tmethod[$ftype]; - $xfer += $input->$func($this->$var); - } else { - switch ($ftype) { - case TType::STRUCT: - $class = $fspec['class']; - $this->$var = new $class(); - $xfer += $this->$var->read($input); - break; - case TType::MAP: - $xfer += $this->_readMap($this->$var, $fspec, $input); - break; - case TType::LST: - $xfer += $this->_readList($this->$var, $fspec, $input, false); - break; - case TType::SET: - $xfer += $this->_readList($this->$var, $fspec, $input, true); - break; - } - } - } else { - $xfer += $input->skip($ftype); - } - } else { - $xfer += $input->skip($ftype); - } - $xfer += $input->readFieldEnd(); - } - $xfer += $input->readStructEnd(); - return $xfer; - } - - private function _writeMap($var, $spec, $output) { - $xfer = 0; - $ktype = $spec['ktype']; - $vtype = $spec['vtype']; - $kwrite = $vwrite = null; - if (isset(TBase::$tmethod[$ktype])) { - $kwrite = 'write'.TBase::$tmethod[$ktype]; - } else { - $kspec = $spec['key']; - } - if (isset(TBase::$tmethod[$vtype])) { - $vwrite = 'write'.TBase::$tmethod[$vtype]; - } else { - $vspec = $spec['val']; - } - $xfer += $output->writeMapBegin($ktype, $vtype, count($var)); - foreach ($var as $key => $val) { - if (isset($kwrite)) { - $xfer += $output->$kwrite($key); - } else { - switch ($ktype) { - case TType::STRUCT: - $xfer += $key->write($output); - break; - case TType::MAP: - $xfer += $this->_writeMap($key, $kspec, $output); - break; - case TType::LST: - $xfer += $this->_writeList($key, $kspec, $output, false); - break; - case TType::SET: - $xfer += $this->_writeList($key, $kspec, $output, true); - break; - } - } - if (isset($vwrite)) { - $xfer += $output->$vwrite($val); - } else { - switch ($vtype) { - case TType::STRUCT: - $xfer += $val->write($output); - break; - case TType::MAP: - $xfer += $this->_writeMap($val, $vspec, $output); - break; - case TType::LST: - $xfer += $this->_writeList($val, $vspec, $output, false); - break; - case TType::SET: - $xfer += $this->_writeList($val, $vspec, $output, true); - break; - } - } - } - $xfer += $output->writeMapEnd(); - return $xfer; - } - - private function _writeList($var, $spec, $output, $set=false) { - $xfer = 0; - $etype = $spec['etype']; - $ewrite = null; - if (isset(TBase::$tmethod[$etype])) { - $ewrite = 'write'.TBase::$tmethod[$etype]; - } else { - $espec = $spec['elem']; - } - if ($set) { - $xfer += $output->writeSetBegin($etype, count($var)); - } else { - $xfer += $output->writeListBegin($etype, count($var)); - } - foreach ($var as $key => $val) { - $elem = $set ? $key : $val; - if (isset($ewrite)) { - $xfer += $output->$ewrite($elem); - } else { - switch ($etype) { - case TType::STRUCT: - $xfer += $elem->write($output); - break; - case TType::MAP: - $xfer += $this->_writeMap($elem, $espec, $output); - break; - case TType::LST: - $xfer += $this->_writeList($elem, $espec, $output, false); - break; - case TType::SET: - $xfer += $this->_writeList($elem, $espec, $output, true); - break; - } - } - } - if ($set) { - $xfer += $output->writeSetEnd(); - } else { - $xfer += $output->writeListEnd(); - } - return $xfer; - } - - protected function _write($class, $spec, $output) { - $xfer = 0; - $xfer += $output->writeStructBegin($class); - foreach ($spec as $fid => $fspec) { - $var = $fspec['var']; - if ($this->$var !== null) { - $ftype = $fspec['type']; - $xfer += $output->writeFieldBegin($var, $ftype, $fid); - if (isset(TBase::$tmethod[$ftype])) { - $func = 'write'.TBase::$tmethod[$ftype]; - $xfer += $output->$func($this->$var); - } else { - switch ($ftype) { - case TType::STRUCT: - $xfer += $this->$var->write($output); - break; - case TType::MAP: - $xfer += $this->_writeMap($this->$var, $fspec, $output); - break; - case TType::LST: - $xfer += $this->_writeList($this->$var, $fspec, $output, false); - break; - case TType::SET: - $xfer += $this->_writeList($this->$var, $fspec, $output, true); - break; - } - } - $xfer += $output->writeFieldEnd(); - } - } - $xfer += $output->writeFieldStop(); - $xfer += $output->writeStructEnd(); - return $xfer; - } - -}
http://git-wip-us.apache.org/repos/asf/airavata/blob/b61cfcd3/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Exception/TProtocolException.php ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Exception/TProtocolException.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Exception/TProtocolException.php deleted file mode 100644 index 98a8d9d..0000000 --- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Exception/TProtocolException.php +++ /dev/null @@ -1,48 +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 ([email protected]) - */ - -namespace Thrift\Exception; - -use Thrift\Exception\TException; - -/** - * Protocol module. Contains all the types and definitions needed to implement - * a protocol encoder/decoder. - * - * @package thrift.protocol - */ - -/** - * Protocol exceptions - */ -class TProtocolException extends TException { - const UNKNOWN = 0; - const INVALID_DATA = 1; - const NEGATIVE_SIZE = 2; - const SIZE_LIMIT = 3; - const BAD_VERSION = 4; - - function __construct($message=null, $code=0) { - parent::__construct($message, $code); - } -} http://git-wip-us.apache.org/repos/asf/airavata/blob/b61cfcd3/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Exception/TTransportException.php ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Exception/TTransportException.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Exception/TTransportException.php deleted file mode 100644 index f467eb9..0000000 --- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Exception/TTransportException.php +++ /dev/null @@ -1,41 +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.transport - */ - -namespace Thrift\Exception; - -use Thrift\Exception\TException; - -/** - * Transport exceptions - */ -class TTransportException extends TException { - - const UNKNOWN = 0; - const NOT_OPEN = 1; - const ALREADY_OPEN = 2; - const TIMED_OUT = 3; - const END_OF_FILE = 4; - - function __construct($message=null, $code=0) { - parent::__construct($message, $code); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/b61cfcd3/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TBinaryProtocolFactory.php ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TBinaryProtocolFactory.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TBinaryProtocolFactory.php deleted file mode 100644 index 85da567..0000000 --- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TBinaryProtocolFactory.php +++ /dev/null @@ -1,43 +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\Factory; - -use Thrift\Factory\TProtocolFactory; -use Thrift\Protocol\TBinaryProtocol; - -/** - * Binary Protocol Factory - */ -class TBinaryProtocolFactory implements TProtocolFactory { - private $strictRead_ = false; - private $strictWrite_ = false; - - public function __construct($strictRead=false, $strictWrite=false) { - $this->strictRead_ = $strictRead; - $this->strictWrite_ = $strictWrite; - } - - public function getProtocol($trans) { - return new TBinaryProtocol($trans, $this->strictRead_, $this->strictWrite_); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/b61cfcd3/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TCompactProtocolFactory.php ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TCompactProtocolFactory.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TCompactProtocolFactory.php deleted file mode 100644 index 9f972aa..0000000 --- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TCompactProtocolFactory.php +++ /dev/null @@ -1,39 +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\Factory; - -use Thrift\Factory\TProtocolFactory; -use Thrift\Protocol\TCompactProtocol; - -/** - * Compact Protocol Factory - */ -class TCompactProtocolFactory implements TProtocolFactory { - - public function __construct() { - } - - public function getProtocol($trans) { - return new TCompactProtocol($trans); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/b61cfcd3/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TJSONProtocolFactory.php ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TJSONProtocolFactory.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TJSONProtocolFactory.php deleted file mode 100644 index 27e4391..0000000 --- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TJSONProtocolFactory.php +++ /dev/null @@ -1,41 +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\Factory; - -use Thrift\Factory\TProtocolFactory; -use Thrift\Protocol\TJSONProtocol; - -/** - * JSON Protocol Factory - */ -class TJSONProtocolFactory implements TProtocolFactory -{ - public function __construct() - { - } - - public function getProtocol($trans) - { - return new TJSONProtocol($trans); - } -} http://git-wip-us.apache.org/repos/asf/airavata/blob/b61cfcd3/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TProtocolFactory.php ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TProtocolFactory.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TProtocolFactory.php deleted file mode 100644 index 6b322eb..0000000 --- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TProtocolFactory.php +++ /dev/null @@ -1,35 +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\Factory; - -/** - * Protocol factory creates protocol objects from transports - */ -interface TProtocolFactory { - /** - * Build a protocol from the base transport - * - * @return Thrift\Protocol\TProtocol protocol - */ - public function getProtocol($trans); -} http://git-wip-us.apache.org/repos/asf/airavata/blob/b61cfcd3/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TStringFuncFactory.php ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TStringFuncFactory.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TStringFuncFactory.php deleted file mode 100644 index edc3649..0000000 --- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TStringFuncFactory.php +++ /dev/null @@ -1,63 +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\Factory; - -use Thrift\StringFunc\Mbstring; -use Thrift\StringFunc\Core; - -class TStringFuncFactory { - private static $_instance; - - /** - * Get the Singleton instance of TStringFunc implementation that is - * compatible with the current system's mbstring.func_overload settings. - * - * @return TStringFunc - */ - public static function create() { - if(!self::$_instance) { - self::_setInstance(); - } - - return self::$_instance; - } - - private static function _setInstance() { - /** - * Cannot use str* functions for byte counting because multibyte - * characters will be read a single bytes. - * - * See: http://us.php.net/manual/en/mbstring.overload.php - */ - if(ini_get('mbstring.func_overload') & 2) { - self::$_instance = new Mbstring(); - } - /** - * mbstring is not installed or does not have function overloading - * of the str* functions enabled so use PHP core str* functions for - * byte counting. - */ - else { - self::$_instance = new Core(); - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/b61cfcd3/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TTransportFactory.php ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TTransportFactory.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TTransportFactory.php deleted file mode 100644 index f3ae123..0000000 --- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Factory/TTransportFactory.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -namespace Thrift\Factory; - -use Thrift\Transport\TTransport; - -class TTransportFactory { - /** - * @static - * @param TTransport $transport - * @return TTransport - */ - public static function getTransport(TTransport $transport) { - return $transport; - } -} http://git-wip-us.apache.org/repos/asf/airavata/blob/b61cfcd3/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/JSON/BaseContext.php ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/JSON/BaseContext.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/JSON/BaseContext.php deleted file mode 100644 index e96e504..0000000 --- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/JSON/BaseContext.php +++ /dev/null @@ -1,39 +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\JSON; - -class BaseContext -{ - function escapeNum() - { - return false; - } - - function write() - { - } - - function read() - { - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/b61cfcd3/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/JSON/ListContext.php ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/JSON/ListContext.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/JSON/ListContext.php deleted file mode 100644 index a2b75b1..0000000 --- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/JSON/ListContext.php +++ /dev/null @@ -1,52 +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\JSON; - -use Thrift\Protocol\JSON\BaseContext; -use Thrift\Protocol\TJSONProtocol; - -class ListContext extends BaseContext -{ - private $first_ = true; - private $p_; - - public function __construct($p) { - $this->p_ = $p; - } - - public function write() { - if ($this->first_) { - $this->first_ = false; - } else { - $this->p_->getTransport()->write(TJSONProtocol::COMMA); - } - } - - public function read() { - if ($this->first_) { - $this->first_ = false; - } else { - $this->p_->readJSONSyntaxChar(TJSONProtocol::COMMA); - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/b61cfcd3/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/JSON/LookaheadReader.php ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/JSON/LookaheadReader.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/JSON/LookaheadReader.php deleted file mode 100644 index 128b5fc..0000000 --- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/JSON/LookaheadReader.php +++ /dev/null @@ -1,54 +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\JSON; - -class LookaheadReader -{ - private $hasData_ = false; - private $data_ = array(); - private $p_; - - public function __construct($p) - { - $this->p_ = $p; - } - - public function read() { - if ($this->hasData_) { - $this->hasData_ = false; - } else { - $this->data_ = $this->p_->getTransport()->readAll(1); - } - - return substr($this->data_, 0, 1); - } - - public function peek() { - if (!$this->hasData_) { - $this->data_ = $this->p_->getTransport()->readAll(1); - } - - $this->hasData_ = true; - return substr($this->data_, 0, 1); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/b61cfcd3/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/JSON/PairContext.php ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/JSON/PairContext.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/JSON/PairContext.php deleted file mode 100644 index 1c87dd3..0000000 --- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/JSON/PairContext.php +++ /dev/null @@ -1,60 +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\JSON; - -use Thrift\Protocol\JSON\BaseContext; -use Thrift\Protocol\TJSONProtocol; - -class PairContext extends BaseContext { - private $first_ = true; - private $colon_ = true; - private $p_ = null; - - public function __construct($p) { - $this->p_ = $p; - } - - public function write() { - if ($this->first_) { - $this->first_ = false; - $this->colon_ = true; - } else { - $this->p_->getTransport()->write($this->colon_ ? TJSONProtocol::COLON : TJSONProtocol::COMMA); - $this->colon_ = !$this->colon_; - } - } - - public function read() { - if ($this->first_) { - $this->first_ = false; - $this->colon_ = true; - } else { - $this->p_->readJSONSyntaxChar($this->colon_ ? TJSONProtocol::COLON : TJSONProtocol::COMMA); - $this->colon_ = !$this->colon_; - } - } - - public function escapeNum() { - return $this->colon_; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/b61cfcd3/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/TBinaryProtocol.php ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/TBinaryProtocol.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/TBinaryProtocol.php deleted file mode 100644 index b1fddac..0000000 --- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/TBinaryProtocol.php +++ /dev/null @@ -1,396 +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\Protocol\TProtocol; -use Thrift\Type\TType; -use Thrift\Exception\TProtocolException; -use Thrift\Factory\TStringFuncFactory; - -/** - * Binary implementation of the Thrift protocol. - * - */ -class TBinaryProtocol extends TProtocol { - - const VERSION_MASK = 0xffff0000; - const VERSION_1 = 0x80010000; - - protected $strictRead_ = false; - protected $strictWrite_ = true; - - public function __construct($trans, $strictRead=false, $strictWrite=true) { - parent::__construct($trans); - $this->strictRead_ = $strictRead; - $this->strictWrite_ = $strictWrite; - } - - public function writeMessageBegin($name, $type, $seqid) { - if ($this->strictWrite_) { - $version = self::VERSION_1 | $type; - return - $this->writeI32($version) + - $this->writeString($name) + - $this->writeI32($seqid); - } else { - return - $this->writeString($name) + - $this->writeByte($type) + - $this->writeI32($seqid); - } - } - - public function writeMessageEnd() { - return 0; - } - - public function writeStructBegin($name) { - return 0; - } - - public function writeStructEnd() { - return 0; - } - - public function writeFieldBegin($fieldName, $fieldType, $fieldId) { - return - $this->writeByte($fieldType) + - $this->writeI16($fieldId); - } - - public function writeFieldEnd() { - return 0; - } - - public function writeFieldStop() { - return - $this->writeByte(TType::STOP); - } - - public function writeMapBegin($keyType, $valType, $size) { - return - $this->writeByte($keyType) + - $this->writeByte($valType) + - $this->writeI32($size); - } - - public function writeMapEnd() { - return 0; - } - - public function writeListBegin($elemType, $size) { - return - $this->writeByte($elemType) + - $this->writeI32($size); - } - - public function writeListEnd() { - return 0; - } - - public function writeSetBegin($elemType, $size) { - return - $this->writeByte($elemType) + - $this->writeI32($size); - } - - public function writeSetEnd() { - return 0; - } - - public function writeBool($value) { - $data = pack('c', $value ? 1 : 0); - $this->trans_->write($data, 1); - return 1; - } - - public function writeByte($value) { - $data = pack('c', $value); - $this->trans_->write($data, 1); - return 1; - } - - public function writeI16($value) { - $data = pack('n', $value); - $this->trans_->write($data, 2); - return 2; - } - - public function writeI32($value) { - $data = pack('N', $value); - $this->trans_->write($data, 4); - return 4; - } - - public function writeI64($value) { - // 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 - if (PHP_INT_SIZE == 4) { - $neg = $value < 0; - - if ($neg) { - $value *= -1; - } - - $hi = (int)($value / 4294967296); - $lo = (int)$value; - - if ($neg) { - $hi = ~$hi; - $lo = ~$lo; - if (($lo & (int)0xffffffff) == (int)0xffffffff) { - $lo = 0; - $hi++; - } else { - $lo++; - } - } - $data = pack('N2', $hi, $lo); - - } else { - $hi = $value >> 32; - $lo = $value & 0xFFFFFFFF; - $data = pack('N2', $hi, $lo); - } - - $this->trans_->write($data, 8); - return 8; - } - - public function writeDouble($value) { - $data = pack('d', $value); - $this->trans_->write(strrev($data), 8); - return 8; - } - - public function writeString($value) { - $len = TStringFuncFactory::create()->strlen($value); - $result = $this->writeI32($len); - if ($len) { - $this->trans_->write($value, $len); - } - return $result + $len; - } - - public function readMessageBegin(&$name, &$type, &$seqid) { - $result = $this->readI32($sz); - if ($sz < 0) { - $version = (int) ($sz & self::VERSION_MASK); - if ($version != (int) self::VERSION_1) { - throw new TProtocolException('Bad version identifier: '.$sz, TProtocolException::BAD_VERSION); - } - $type = $sz & 0x000000ff; - $result += - $this->readString($name) + - $this->readI32($seqid); - } else { - if ($this->strictRead_) { - throw new TProtocolException('No version identifier, old protocol client?', TProtocolException::BAD_VERSION); - } else { - // Handle pre-versioned input - $name = $this->trans_->readAll($sz); - $result += - $sz + - $this->readByte($type) + - $this->readI32($seqid); - } - } - return $result; - } - - public function readMessageEnd() { - return 0; - } - - public function readStructBegin(&$name) { - $name = ''; - return 0; - } - - public function readStructEnd() { - return 0; - } - - public function readFieldBegin(&$name, &$fieldType, &$fieldId) { - $result = $this->readByte($fieldType); - if ($fieldType == TType::STOP) { - $fieldId = 0; - return $result; - } - $result += $this->readI16($fieldId); - return $result; - } - - public function readFieldEnd() { - return 0; - } - - public function readMapBegin(&$keyType, &$valType, &$size) { - return - $this->readByte($keyType) + - $this->readByte($valType) + - $this->readI32($size); - } - - public function readMapEnd() { - return 0; - } - - public function readListBegin(&$elemType, &$size) { - return - $this->readByte($elemType) + - $this->readI32($size); - } - - public function readListEnd() { - return 0; - } - - public function readSetBegin(&$elemType, &$size) { - return - $this->readByte($elemType) + - $this->readI32($size); - } - - public function readSetEnd() { - return 0; - } - - public function readBool(&$value) { - $data = $this->trans_->readAll(1); - $arr = unpack('c', $data); - $value = $arr[1] == 1; - return 1; - } - - public function readByte(&$value) { - $data = $this->trans_->readAll(1); - $arr = unpack('c', $data); - $value = $arr[1]; - return 1; - } - - public function readI16(&$value) { - $data = $this->trans_->readAll(2); - $arr = unpack('n', $data); - $value = $arr[1]; - if ($value > 0x7fff) { - $value = 0 - (($value - 1) ^ 0xffff); - } - return 2; - } - - public function readI32(&$value) { - $data = $this->trans_->readAll(4); - $arr = unpack('N', $data); - $value = $arr[1]; - if ($value > 0x7fffffff) { - $value = 0 - (($value - 1) ^ 0xffffffff); - } - return 4; - } - - public function readI64(&$value) { - $data = $this->trans_->readAll(8); - - $arr = unpack('N2', $data); - - // 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 - if (PHP_INT_SIZE == 4) { - - $hi = $arr[1]; - $lo = $arr[2]; - $isNeg = $hi < 0; - - // 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 pe positive - we deal wigh sign - // explicitly below - - if ($hi & (int)0x80000000) { - $hi &= (int)0x7fffffff; - $hi += 0x80000000; - } - - if ($lo & (int)0x80000000) { - $lo &= (int)0x7fffffff; - $lo += 0x80000000; - } - - $value = $hi * 4294967296 + $lo; - - if ($isNeg) { - $value = 0 - $value; - } - } else { - - // Upcast negatives in LSB bit - if ($arr[2] & 0x80000000) { - $arr[2] = $arr[2] & 0xffffffff; - } - - // Check for a negative - if ($arr[1] & 0x80000000) { - $arr[1] = $arr[1] & 0xffffffff; - $arr[1] = $arr[1] ^ 0xffffffff; - $arr[2] = $arr[2] ^ 0xffffffff; - $value = 0 - $arr[1]*4294967296 - $arr[2] - 1; - } else { - $value = $arr[1]*4294967296 + $arr[2]; - } - } - - return 8; - } - - public function readDouble(&$value) { - $data = strrev($this->trans_->readAll(8)); - $arr = unpack('d', $data); - $value = $arr[1]; - return 8; - } - - public function readString(&$value) { - $result = $this->readI32($len); - if ($len) { - $value = $this->trans_->readAll($len); - } else { - $value = ''; - } - return $result + $len; - } -} http://git-wip-us.apache.org/repos/asf/airavata/blob/b61cfcd3/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/TBinaryProtocolAccelerated.php ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/TBinaryProtocolAccelerated.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/TBinaryProtocolAccelerated.php deleted file mode 100644 index 392aa21..0000000 --- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/TBinaryProtocolAccelerated.php +++ /dev/null @@ -1,47 +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\Protocol\TBinaryProtocol; -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) - 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_; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata/blob/b61cfcd3/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/TCompactProtocol.php ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/TCompactProtocol.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/TCompactProtocol.php deleted file mode 100644 index e637a59..0000000 --- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/TCompactProtocol.php +++ /dev/null @@ -1,669 +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\Protocol\TProtocol; -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_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); - } else if ($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(strrev($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($field_type); - - if (($field_type & 0x0f) == TType::STOP) { - $field_id = 0; - return $result; - } - $delta = $field_type >> 4; - if ($delta == 0) { - $result += $this->readI16($field_id); - } else { - $field_id = $this->lastFid + $delta; - } - $this->lastFid = $field_id; - $field_type = $this->getTType($field_type & 0x0f); - if ($field_type == TCompactProtocol::COMPACT_TRUE) { - $this->state = TCompactProtocol::STATE_BOOL_READ; - $this->boolValue = true; - } else if ($field_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_MASK) >> - TCompactProtocol::TYPE_SHIFT_AMOUNT; - $version = $verType & TCompactProtocol::VERSION_MASK; - if ($version != TCompactProtocol::VERSION) { - throw new TProtocolException('Bad version in TCompact message'); - } - $result += $this->readVarint($seqId); - $name += $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; - } else if ($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 = strrev($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; - if ($shift < 32) { - $lo |= (($byte & 0x7f) << $shift) & - 0x00000000ffffffff; - } - // Shift hi and lo together. - if ($shift >= 32) { - $hi |= (($byte & 0x7f) << ($shift - 32)); - } else if ($shift > 25) { - $hi |= (($byte & 0x7f) >> ($shift - 25)); - } - 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 - if (true) { - $isNeg = $hi < 0; - - // 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; - } - - $value = $hi * 4294967296 + $lo; - - if ($isNeg) { - $value = 0 - $value; - } - } else { - - // Upcast negatives in LSB bit - if ($arr[2] & 0x80000000) { - $arr[2] = $arr[2] & 0xffffffff; - } - - // Check for a negative - if ($arr[1] & 0x80000000) { - $arr[1] = $arr[1] & 0xffffffff; - $arr[1] = $arr[1] ^ 0xffffffff; - $arr[2] = $arr[2] ^ 0xffffffff; - $value = 0 - $arr[1] * 4294967296 - $arr[2] - 1; - } else { - $value = $arr[1] * 4294967296 + $arr[2]; - } - } - - 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/airavata/blob/b61cfcd3/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/TJSONProtocol.php ---------------------------------------------------------------------- diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/TJSONProtocol.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/TJSONProtocol.php deleted file mode 100644 index 3d39583..0000000 --- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Thrift/Protocol/TJSONProtocol.php +++ /dev/null @@ -1,694 +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\Protocol\TProtocol; -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; - } - else if (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 writeJSONString($b) { - $this->context_->write(); - - if (is_numeric($b) && $this->context_->escapeNum()) { - $this->trans_->write(self::QUOTE); - } - - $this->trans_->write(json_encode($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; - } else if ($arr == "Infinity") { - return INF; - } else if (!$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; - } -}
