Port to PEAR and more * @copyright 2003-2005 The PHP Group * @license http://www.php.net/license/2_02.txt PHP License 2.02 * @link http://pear.php.net/package/SOAP */ require_once 'SOAP/Server.php'; require_once 'SOAP/Server/TCP/Handler.php'; /** * SOAP Server Class that implements a TCP SOAP Server. * http://www.pocketsoap.com/specs/smtpbinding/ * * This class overrides the default HTTP server, providing the ability to * accept socket connections and execute SOAP calls. * * TODO: * use Net_Socket * implement some security scheme * implement support for attachments * * @access public * @package SOAP * @author Shane Caraveo */ class SOAP_Server_TCP extends SOAP_Server { var $headers = array(); var $localaddr; var $port; var $type; function SOAP_Server_TCP($localaddr = '127.0.0.1', $port = 10000, $type = 'sequential') { parent::SOAP_Server(); $this->localaddr = $localaddr; $this->port = $port; $this->type = $type; } function run($idleTimeout = null) { $server = &Net_Server::create($this->type, $this->localaddr, $this->port); if (PEAR::isError($server)) { echo $server->getMessage()."\n"; } $handler = &new SOAP_Server_TCP_Handler; $handler->setSOAPServer($this); // hand over the object that handles server events $server->setCallbackObject($handler); $server->readEndCharacter = ''; $server->setIdleTimeout($idleTimeout); // start the server $server->start(); } function service(&$data) { /* TODO: we need to handle attachments somehow. */ $response = $this->parseRequest($data); if ($this->fault) { $response = $this->fault->message($this->response_encoding); } return $response; } function onStart() { } function onIdle() { } }