diff options
author | Fabio Bas <ctrlaltca@gmail.com> | 2015-01-20 22:12:46 +0100 |
---|---|---|
committer | Fabio Bas <ctrlaltca@gmail.com> | 2015-01-20 22:12:46 +0100 |
commit | 7254793d2bbe3f2f3d87d97172c54a54deea0a3a (patch) | |
tree | 696f734b5f0fad620f459a4639e269bffad4444d /framework/Web/Services/TRpcServer.php | |
parent | 6a77820f00da900f2355e16ef9aa77cd132fb423 (diff) |
One class per file: framework/Web/Services
Diffstat (limited to 'framework/Web/Services/TRpcServer.php')
-rw-r--r-- | framework/Web/Services/TRpcServer.php | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/framework/Web/Services/TRpcServer.php b/framework/Web/Services/TRpcServer.php new file mode 100644 index 00000000..ab8dd17d --- /dev/null +++ b/framework/Web/Services/TRpcServer.php @@ -0,0 +1,78 @@ +<?php +/** + * @author Robin J. Rogge <rrogge@bigpoint.net> + * @link http://www.pradosoft.com/ + * @copyright 2010 Bigpoint GmbH + * @license http://www.pradosoft.com/license/ + * @version $Id$ + * @since 3.2 + * @package System.Web.Services + */ + +/** + * TRpcServer class + * + * TRpcServer is a class + * + * TRpcServer is the base class used to creare a server to be used in conjunction with + * {@link TRpcService}. + * The role of TRpcServer is to be an intermediate, moving data between the service and + * the provider. This base class should suit the most common needs, but can be sublassed for + * logging and debugging purposes, or to filter and modify the request/response on the fly. + * + * @author Robin J. Rogge <rrogge@bigpoint.net> + * @version $Id$ + * @package System.Web.Services + * @since 3.2 + **/ +class TRpcServer extends TModule +{ + /** + * @var TRpcProtocol instance + */ + protected $handler; + + /** + * Constructor + * @param TRpcProtocol $protocolHandler instance + */ + public function __construct(TRpcProtocol $protocolHandler) + { + $this->handler = $protocolHandler; + } + + /** + * Registers the method in the protocol handler + * @param string $methodName + * @param array $methodDetails + */ + public function addRpcMethod($methodName, $methodDetails) + { + $this->handler->addMethod($methodName, $methodDetails); + } + + /** + * Retrieves the request payload + * @return string request payload + */ + public function getPayload() + { + return file_get_contents('php://input'); + } + + /** + * Passes the request payload to the protocol handler and returns the result + * @return string rpc response + */ + public function processRequest() + { + try + { + return $this->handler->callMethod($this->getPayload()); + } + catch(TRpcException $e) + { + return $this->handler->createErrorResponse($e); + } + } +}
\ No newline at end of file |