Public Member Functions | Data Fields

ilBMFTransport_TCP Class Reference

Inheritance diagram for ilBMFTransport_TCP:
Collaboration diagram for ilBMFTransport_TCP:

Public Member Functions

 ilBMFTransport_TCP ($url, $encoding=SOAP_DEFAULT_ENCODING)
 Constructor.
 _socket_ping ()
 send ($msg, $options=NULL)
 Sends and receives SOAP data.
 _validateUrl ()
 Validates the url data passed to the constructor.

Data Fields

 $headers = array()
 $urlparts = null
 $url = ''
 $incoming_payload = ''
 $_userAgent = SOAP_LIBRARY_NAME
 $encoding = SOAP_DEFAULT_ENCODING
 $result_encoding = 'UTF-8'
 $result_content_type
 $socket = null
 socket

Detailed Description

Definition at line 33 of file class.ilBMFTransport_TCP.php.


Member Function Documentation

ilBMFTransport_TCP::_socket_ping (  ) 

Definition at line 65 of file class.ilBMFTransport_TCP.php.

Referenced by send().

    {
        // XXX how do we restart after socket_shutdown?
        //if (!$this->socket) {
            // Create socket resource.
            $this->socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
            if ($this->socket < 0) {
                return 0;
            }

            // Connect.
            $result = socket_connect($this->socket, $this->urlparts['host'],
                                     $this->urlparts['port']);
            if ($result < 0) {
                return 0;
            }
        //}
        return 1;
    }

Here is the caller graph for this function:

ilBMFTransport_TCP::_validateUrl (  ) 

Validates the url data passed to the constructor.

Returns:
boolean private

Definition at line 142 of file class.ilBMFTransport_TCP.php.

References ilBMFBase_Object::_raiseSoapFault().

Referenced by send().

    {
        if (!is_array($this->urlparts) ) {
            $this->_raiseSoapFault("Unable to parse URL $url");
            return false;
        }
        if (!isset($this->urlparts['host'])) {
            $this->_raiseSoapFault("No host in URL $url");
            return false;
        }
        if (!isset($this->urlparts['path']) || !$this->urlparts['path']) {
            $this->urlparts['path'] = '/';
        }

        return true;
    }

Here is the call graph for this function:

Here is the caller graph for this function:

ilBMFTransport_TCP::ilBMFTransport_TCP ( url,
encoding = SOAP_DEFAULT_ENCODING 
)

Constructor.

Parameters:
string $url HTTP url to SOAP endpoint.

public

Definition at line 57 of file class.ilBMFTransport_TCP.php.

References $encoding, $url, and ilBMFBase_Object::ilBMFBase_Object().

    {
        parent::ilBMFBase_Object('TCP');
        $this->urlparts = @parse_url($url);
        $this->url = $url;
        $this->encoding = $encoding;
    }

Here is the call graph for this function:

ilBMFTransport_TCP::send ( msg,
options = NULL 
)

Sends and receives SOAP data.

Parameters:
string $msg Outgoing POST data.
string $action SOAP Action header data.
Returns:
string|ilBMFFault public

Definition at line 94 of file class.ilBMFTransport_TCP.php.

References ilBMFBase_Object::_raiseSoapFault(), _socket_ping(), and _validateUrl().

    {
        $this->incoming_payload = '';
        $this->outgoing_payload = $msg;
        if (!$this->_validateUrl()) {
            return $this->fault;
        }

        // Check for TCP scheme.
        if (strcasecmp($this->urlparts['scheme'], 'TCP') == 0) {
            // Check connection.
            if (!$this->_socket_ping()) {
                return $this->_raiseSoapFault('Error connecting to ' . $this->url . '; reason: ' . socket_strerror(socket_last_error($this->socket)));
            }

            // Write to the socket.
            if (!@socket_write($this->socket, $this->outgoing_payload,
                               strlen($this->outgoing_payload))) {
                return $this->_raiseSoapFault('Error sending data to ' . $this->url . '; reason: ' . socket_strerror(socket_last_error($this->socket)));
            }

            // Shutdown writing.
            if(!socket_shutdown($this->socket, 1)) {
                return $this->_raiseSoapFault('Cannot change socket mode to read.');
            }

            // Read everything we can.
            while ($buf = @socket_read($this->socket, 1024, PHP_BINARY_READ)) {
                $this->incoming_payload .= $buf;
            }

            // Return payload or die.
            if ($this->incoming_payload) {
                return $this->incoming_payload;
            }

            return $this->_raiseSoapFault('Error reveiving data from ' . $this->url);
        }

        return $this->_raiseSoapFault('Invalid url scheme ' . $this->url);
    }

Here is the call graph for this function:


Field Documentation

ilBMFTransport_TCP::$_userAgent = SOAP_LIBRARY_NAME

Definition at line 40 of file class.ilBMFTransport_TCP.php.

ilBMFTransport_TCP::$encoding = SOAP_DEFAULT_ENCODING

Definition at line 41 of file class.ilBMFTransport_TCP.php.

Referenced by ilBMFTransport_TCP().

ilBMFTransport_TCP::$headers = array()

Definition at line 36 of file class.ilBMFTransport_TCP.php.

ilBMFTransport_TCP::$incoming_payload = ''

Definition at line 39 of file class.ilBMFTransport_TCP.php.

ilBMFTransport_TCP::$result_content_type

Definition at line 43 of file class.ilBMFTransport_TCP.php.

ilBMFTransport_TCP::$result_encoding = 'UTF-8'

Definition at line 42 of file class.ilBMFTransport_TCP.php.

ilBMFTransport_TCP::$socket = null

socket

Definition at line 48 of file class.ilBMFTransport_TCP.php.

ilBMFTransport_TCP::$url = ''

Definition at line 38 of file class.ilBMFTransport_TCP.php.

Referenced by ilBMFTransport_TCP().

ilBMFTransport_TCP::$urlparts = null

Definition at line 37 of file class.ilBMFTransport_TCP.php.


The documentation for this class was generated from the following file: