Rev 30 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?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*//*** Php stream transport. Reads to and writes from the php standard streams* php://input and php://output** @package thrift.transport*/class TPhpStream extends TTransport {const MODE_R = 1;const MODE_W = 2;private $inStream_ = null;private $outStream_ = null;private $read_ = false;private $write_ = false;public function __construct($mode) {$this->read_ = $mode & self::MODE_R;$this->write_ = $mode & self::MODE_W;}public function open() {if ($this->read_) {$this->inStream_ = @fopen(self::inStreamName(), 'r');if (!is_resource($this->inStream_)) {throw new TException('TPhpStream: Could not open php://input');}}if ($this->write_) {$this->outStream_ = @fopen('php://output', 'w');if (!is_resource($this->outStream_)) {throw new TException('TPhpStream: Could not open php://output');}}}public function close() {if ($this->read_) {@fclose($this->inStream_);$this->inStream_ = null;}if ($this->write_) {@fclose($this->outStream_);$this->outStream_ = null;}}public function isOpen() {return(!$this->read_ || is_resource($this->inStream_)) &&(!$this->write_ || is_resource($this->outStream_));}public function read($len) {$data = @fread($this->inStream_, $len);if ($data === FALSE || $data === '') {throw new TException('TPhpStream: Could not read '.$len.' bytes');}return $data;}public function write($buf) {while (strlen($buf) > 0) {$got = @fwrite($this->outStream_, $buf);if ($got === 0 || $got === FALSE) {throw new TException('TPhpStream: Could not write '.strlen($buf).' bytes');}$buf = substr($buf, $got);}}public function flush() {@fflush($this->outStream_);}private static function inStreamName() {if (php_sapi_name() == 'cli') {return 'php://stdin';}return 'php://input';}}?>