From 794993d278930cde40b69b61f0eac679bb5938e4 Mon Sep 17 00:00:00 2001 From: Mark Slee Date: Wed, 20 Sep 2006 01:56:10 +0000 Subject: [PATCH] Change run() to serve() in all Thrift server interfaces git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@664799 13f79535-47bb-0310-9956-ffa450edef68 --- compiler/cpp/src/generate/t_php_generator.cc | 6 ++--- lib/cpp/src/server/TServer.h | 4 +-- lib/cpp/src/server/TSimpleServer.cc | 2 +- lib/cpp/src/server/TSimpleServer.h | 2 +- lib/cpp/src/server/TThreadPoolServer.cc | 2 +- lib/cpp/src/server/TThreadPoolServer.h | 2 +- lib/php/src/transport/TSocket.php | 28 +++++++++++++++----- lib/py/src/server/TServer.py | 6 ++--- test/cpp/src/TestServer.cc | 4 +-- test/py/TestServer.py | 2 +- 10 files changed, 37 insertions(+), 21 deletions(-) diff --git a/compiler/cpp/src/generate/t_php_generator.cc b/compiler/cpp/src/generate/t_php_generator.cc index 6ac0b334..1ed599c1 100644 --- a/compiler/cpp/src/generate/t_php_generator.cc +++ b/compiler/cpp/src/generate/t_php_generator.cc @@ -341,7 +341,7 @@ void t_php_generator::generate_service(t_service* tservice) { php_includes(); f_service_ << - "require_once dirname(__FILE__).'/" << program_name_ << "_types.php';" << endl << endl; + "require_once $GLOBALS['THRIFT_ROOT'].'/packages/" << program_name_ << "/" << program_name << "_types.php';" << endl << endl; // Generate the three main parts of the service (well, two for now in PHP) generate_service_interface(tservice); @@ -624,12 +624,12 @@ void t_php_generator::generate_service_client(t_service* tservice) { f_service_ << indent() << "throw new Exception(\"" << (*f_iter)->get_name() << " failed: unknown result\");" << endl; } - } // Close function scope_down(f_service_); f_service_ << endl; - + + } } indent_down(); diff --git a/lib/cpp/src/server/TServer.h b/lib/cpp/src/server/TServer.h index c19302fe..ddb320df 100644 --- a/lib/cpp/src/server/TServer.h +++ b/lib/cpp/src/server/TServer.h @@ -21,10 +21,10 @@ class TServerOptions; * * @author Mark Slee */ -class TServer : public concurrency::Runnable { +class TServer { public: virtual ~TServer() {} - virtual void run() = 0; + virtual void serve() = 0; protected: TServer(shared_ptr processor, diff --git a/lib/cpp/src/server/TSimpleServer.cc b/lib/cpp/src/server/TSimpleServer.cc index 041a52fe..63b6c6be 100644 --- a/lib/cpp/src/server/TSimpleServer.cc +++ b/lib/cpp/src/server/TSimpleServer.cc @@ -11,7 +11,7 @@ namespace facebook { namespace thrift { namespace server { * * @author Mark Slee */ -void TSimpleServer::run() { +void TSimpleServer::serve() { shared_ptr client; pair,shared_ptr > io; diff --git a/lib/cpp/src/server/TSimpleServer.h b/lib/cpp/src/server/TSimpleServer.h index 973ba30b..a0d22a76 100644 --- a/lib/cpp/src/server/TSimpleServer.h +++ b/lib/cpp/src/server/TSimpleServer.h @@ -24,7 +24,7 @@ class TSimpleServer : public TServer { ~TSimpleServer() {} - void run(); + void serve(); }; diff --git a/lib/cpp/src/server/TThreadPoolServer.cc b/lib/cpp/src/server/TThreadPoolServer.cc index 1eab53d7..4285b053 100644 --- a/lib/cpp/src/server/TThreadPoolServer.cc +++ b/lib/cpp/src/server/TThreadPoolServer.cc @@ -55,7 +55,7 @@ TThreadPoolServer::TThreadPoolServer(shared_ptr processor, TThreadPoolServer::~TThreadPoolServer() {} -void TThreadPoolServer::run() { +void TThreadPoolServer::serve() { shared_ptr client; pair,shared_ptr > io; diff --git a/lib/cpp/src/server/TThreadPoolServer.h b/lib/cpp/src/server/TThreadPoolServer.h index 34b216cc..b8f8b47f 100644 --- a/lib/cpp/src/server/TThreadPoolServer.h +++ b/lib/cpp/src/server/TThreadPoolServer.h @@ -26,7 +26,7 @@ public: virtual ~TThreadPoolServer(); - virtual void run(); + virtual void serve(); protected: diff --git a/lib/php/src/transport/TSocket.php b/lib/php/src/transport/TSocket.php index 74ef01fe..5ecd8740 100644 --- a/lib/php/src/transport/TSocket.php +++ b/lib/php/src/transport/TSocket.php @@ -165,12 +165,28 @@ class TSocket extends TTransport { stream_set_timeout($this->handle_, 0, $this->recvTimeout_*1000); $this->sendTimeoutSet_ = FALSE; } - $buf = @stream_get_contents($this->handle_, $len); - if ($buf === FALSE || strlen($buf) !== $len) { - throw new Exception('TSocket: Could not read '.$len.' bytes from '. - $this->host_.':'.$this->port_); + // This call does not obey stream_set_timeout values! + // $buf = @stream_get_contents($this->handle_, $len); + + $pre = null; + while (true) { + $buf = @fread($this->handle_, $len); + if ($buf === FALSE) { + throw new Exception('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 Exception('TSocket: timed out reading '.$len.' bytes from '. + $this->host_.':'.$this->port_); + } else { + $pre .= $buf; + $len -= $sz; + } + } else { + return $pre.$buf; + } } - return $buf; } /** @@ -184,7 +200,7 @@ class TSocket extends TTransport { stream_set_timeout($this->handle_, 0, $this->recvTimeout_*1000); $this->sendTimeoutSet_ = FALSE; } - $data = @fread($this->handle_, 1); + $data = @fread($this->handle_, $len); if ($data === FALSE) { throw new Exception('TSocket: Could not read '.$len.' bytes from '. $this->host_.':'.$this->port_); diff --git a/lib/py/src/server/TServer.py b/lib/py/src/server/TServer.py index 53f6846d..c9a701ea 100644 --- a/lib/py/src/server/TServer.py +++ b/lib/py/src/server/TServer.py @@ -6,7 +6,7 @@ from thrift.transport import TTransport class TServer: - """Base interface for a server, which must have a run method.""" + """Base interface for a server, which must have a serve method.""" def __init__(self, processor, serverTransport, transportFactory=None): self.processor = processor @@ -16,7 +16,7 @@ class TServer: else: self.transportFactory = transportFactory - def run(self): + def serve(self): pass class TSimpleServer(TServer): @@ -26,7 +26,7 @@ class TSimpleServer(TServer): def __init__(self, processor, serverTransport, transportFactory=None): TServer.__init__(self, processor, serverTransport, transportFactory) - def run(self): + def serve(self): self.serverTransport.listen() while True: client = self.serverTransport.accept() diff --git a/test/cpp/src/TestServer.cc b/test/cpp/src/TestServer.cc index f2f9eca5..db41b79d 100644 --- a/test/cpp/src/TestServer.cc +++ b/test/cpp/src/TestServer.cc @@ -353,7 +353,7 @@ int main(int argc, char **argv) { ); printf("Starting the server on port %d...\n", port); - simpleServer.run(); + simpleServer.serve(); } else if (serverType == "thread-pool") { @@ -374,7 +374,7 @@ int main(int argc, char **argv) { serverOptions); printf("Starting the server on port %d...\n", port); - threadPoolServer.run(); + threadPoolServer.serve(); } printf("done.\n"); diff --git a/test/py/TestServer.py b/test/py/TestServer.py index f0f9ba11..96312c56 100755 --- a/test/py/TestServer.py +++ b/test/py/TestServer.py @@ -57,4 +57,4 @@ handler = TestHandler() processor = ThriftTest.Processor(handler, protocol) factory = TTransport.TBufferedTransportFactory() server = TServer.TSimpleServer(processor, transport, factory) -server.run() +server.serve() -- 2.17.1