THRIFT-778. php: PHP socket listening server
This patch which adds TServerTransport/TServerSocket, along with a generic TServer and TSimpleServer implementation.
Patch: Nick Jones
git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@984864 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/lib/php/src/transport/TSocket.php b/lib/php/src/transport/TSocket.php
index a3000f7..bbe1987 100644
--- a/lib/php/src/transport/TSocket.php
+++ b/lib/php/src/transport/TSocket.php
@@ -110,6 +110,14 @@
}
/**
+ * @param resource $handle
+ * @return void
+ */
+ public function setHandle($handle) {
+ $this->handle_ = $handle;
+ }
+
+ /**
* Sets the send timeout.
*
* @param int $timeout Timeout in milliseconds.
@@ -167,6 +175,17 @@
* Connects the socket.
*/
public function open() {
+ if ($this->isOpen()) {
+ throw new TTransportException('Socket already connected', TTransportException::ALREADY_OPEN);
+ }
+
+ if (empty($this->host_)) {
+ throw new TTransportException('Cannot open null host', TTransportException::NOT_OPEN);
+ }
+
+ if ($this->port_ <= 0) {
+ throw new TTransportException('Cannot open without port', TTransportException::NOT_OPEN);
+ }
if ($this->persist_) {
$this->handle_ = @pfsockopen($this->host_,
@@ -225,16 +244,16 @@
if ($buf === FALSE || $buf === '') {
$md = stream_get_meta_data($this->handle_);
if ($md['timed_out']) {
- throw new TException('TSocket: timed out reading '.$len.' bytes from '.
+ throw new TTransportException('TSocket: timed out reading '.$len.' bytes from '.
$this->host_.':'.$this->port_);
} else {
- throw new TException('TSocket: Could not read '.$len.' bytes from '.
+ throw new TTransportException('TSocket: Could not read '.$len.' bytes from '.
$this->host_.':'.$this->port_);
}
} else if (($sz = strlen($buf)) < $len) {
$md = stream_get_meta_data($this->handle_);
if ($md['timed_out']) {
- throw new TException('TSocket: timed out reading '.$len.' bytes from '.
+ throw new TTransportException('TSocket: timed out reading '.$len.' bytes from '.
$this->host_.':'.$this->port_);
} else {
$pre .= $buf;
@@ -261,10 +280,10 @@
if ($data === FALSE || $data === '') {
$md = stream_get_meta_data($this->handle_);
if ($md['timed_out']) {
- throw new TException('TSocket: timed out reading '.$len.' bytes from '.
+ throw new TTransportException('TSocket: timed out reading '.$len.' bytes from '.
$this->host_.':'.$this->port_);
} else {
- throw new TException('TSocket: Could not read '.$len.' bytes from '.
+ throw new TTransportException('TSocket: Could not read '.$len.' bytes from '.
$this->host_.':'.$this->port_);
}
}
@@ -286,10 +305,10 @@
if ($got === 0 || $got === FALSE) {
$md = stream_get_meta_data($this->handle_);
if ($md['timed_out']) {
- throw new TException('TSocket: timed out writing '.strlen($buf).' bytes from '.
+ throw new TTransportException('TSocket: timed out writing '.strlen($buf).' bytes from '.
$this->host_.':'.$this->port_);
} else {
- throw new TException('TSocket: Could not write '.strlen($buf).' bytes '.
+ throw new TTransportException('TSocket: Could not write '.strlen($buf).' bytes '.
$this->host_.':'.$this->port_);
}
}