Ignore:
Timestamp:
2012/02/09 01:26:58 (14 years ago)
Author:
Seasoft
Message:

#1522 (PEAR::SOAP をバージョンアップ)

  • 0.12.0 -> 0.13.0
  • SOAP_WSDL により、「Yahoo!デベロッパーネットワーク」の「オークション SOAP」を取得できることを確認した。
Location:
branches/version-2_12-dev/data/module/SOAP/Server
Files:
2 added
2 edited

Legend:

Unmodified
Added
Removed
  • branches/version-2_12-dev/data/module/SOAP/Server/Email.php

    r21318 r21461  
    118118        } 
    119119 
    120         $client =& new SOAP_Client(null); 
     120        $client = new SOAP_Client(null); 
    121121 
    122122        return $client->parseResponse($data, $this->xml_encoding, $this->attachments); 
  • branches/version-2_12-dev/data/module/SOAP/Server/TCP.php

    r20119 r21461  
    2222require_once 'SOAP/Server.php'; 
    2323 
     24require_once 'SOAP/Server/TCP/Handler.php'; 
     25 
     26 
    2427/** 
    2528 * SOAP Server Class that implements a TCP SOAP Server. 
     
    4346    var $localaddr; 
    4447    var $port; 
    45     var $listen; 
    46     var $reuse; 
     48    var $type; 
    4749 
    4850    function SOAP_Server_TCP($localaddr = '127.0.0.1', $port = 10000, 
    49                              $listen = 5, $reuse = true) 
     51                             $type = 'sequential') 
    5052    { 
    5153        parent::SOAP_Server(); 
    5254        $this->localaddr = $localaddr; 
    5355        $this->port = $port; 
    54         $this->listen = $listen; 
    55         $this->reuse = $reuse; 
     56        $this->type = $type; 
    5657    } 
    5758 
    58     function run() 
    59     { 
    60         if (($sock = socket_create(AF_INET, SOCK_STREAM, 0)) < 0) { 
    61             return $this->_raiseSoapFault('socket_create() failed. Reason: ' . socket_strerror($sock)); 
     59    function run($idleTimeout = null) 
     60    {         
     61        $server = &Net_Server::create($this->type, $this->localaddr, 
     62                                      $this->port); 
     63        if (PEAR::isError($server)) { 
     64            echo $server->getMessage()."\n"; 
    6265        } 
    63         if ($this->reuse && 
    64             !@socket_setopt($sock, SOL_SOCKET, SO_REUSEADDR, 1)) { 
    65             return $this->_raiseSoapFault('socket_setopt() failed. Reason: ' . socket_strerror(socket_last_error($sock))); 
    66         } 
    67         if (($ret = socket_bind($sock, $this->localaddr, $this->port)) < 0) { 
    68             return $this->_raiseSoapFault('socket_bind() failed. Reason: ' . socket_strerror($ret)); 
    69         } 
    70         if (($ret = socket_listen($sock, $this->listen)) < 0) { 
    71             return $this->_raiseSoapFault('socket_listen() failed. Reason: ' . socket_strerror($ret)); 
    72         } 
    73  
    74         while (true) { 
    75             $data = null; 
    76             if (($msgsock = socket_accept($sock)) < 0) { 
    77                 $this->_raiseSoapFault('socket_accept() failed. Reason: ' . socket_strerror($msgsock)); 
    78                 break; 
    79             } 
    80             while ($buf = socket_read($msgsock, 8192)) { 
    81                 if (!$buf = trim($buf)) { 
    82                     continue; 
    83                 } 
    84                 $data .= $buf; 
    85             } 
    86  
    87             if ($data) { 
    88                 $response = $this->service($data); 
    89                 /* Write to the socket. */ 
    90                 if (!socket_write($msgsock, $response, strlen($response))) { 
    91                     return $this->_raiseSoapFault('Error sending response data reason ' . socket_strerror()); 
    92                 } 
    93             } 
    94  
    95             socket_close ($msgsock); 
    96         } 
    97  
    98         socket_close ($sock); 
     66         
     67        $handler = &new SOAP_Server_TCP_Handler; 
     68        $handler->setSOAPServer($this); 
     69         
     70        // hand over the object that handles server events 
     71        $server->setCallbackObject($handler); 
     72        $server->readEndCharacter = '</SOAP-ENV:Envelope>'; 
     73        $server->setIdleTimeout($idleTimeout); 
     74         
     75        // start the server 
     76        $server->start(); 
    9977    } 
    10078 
     
    10280    { 
    10381        /* TODO: we need to handle attachments somehow. */ 
    104         return $this->parseRequest($data, $attachments); 
     82        $response = $this->parseRequest($data); 
     83        if ($this->fault) { 
     84            $response = $this->fault->message($this->response_encoding); 
     85        } 
     86        return $response; 
     87    } 
     88     
     89    function onStart() 
     90    { 
     91    } 
     92     
     93    function onIdle() 
     94    { 
    10595    } 
    10696} 
Note: See TracChangeset for help on using the changeset viewer.