TeamSpeak 3 PHP Framework
1.1.12
|
Class for connecting to a remote server through TCP. More...
Public Member Functions | |
connect () | |
Connects to a remote server. | |
disconnect () | |
Disconnects from a remote server. | |
read ($length=4096) | |
Reads data from the stream. | |
readLine ($token="\n") | |
Reads a single line of data from the stream. | |
send ($data) | |
Writes data to the stream. | |
sendLine ($data, $separator="\n") | |
Writes a line of data to the stream. | |
__sleep () | |
Commit pending data. | |
__wakeup () | |
Reconnects to the remote server. | |
getStream () | |
Returns the underlying stream resource. | |
getConfig ($key=null, $default=null) | |
Returns the configuration variables in this adapter. | |
setAdapter (TeamSpeak3_Adapter_Abstract $adapter) | |
Sets the TeamSpeak3_Adapter_Abstract object using this transport. | |
getAdapter () | |
Returns the TeamSpeak3_Adapter_Abstract object using this transport. | |
getAdapterType () | |
Returns the adapter type. | |
getMetaData () | |
Returns header/meta data from stream pointer. | |
isConnected () | |
Returns TRUE if the transport is connected. | |
Protected Member Functions | |
waitForReadyRead ($time=0) | |
Blocks a stream until data is available for reading if the stream is connected in non-blocking mode. | |
Protected Attributes | |
$config = null | |
$stream = null | |
$adapter = null |
Connects to a remote server.
TeamSpeak3_Transport_Exception |
Reimplemented from TeamSpeak3_Transport_Abstract.
Definition at line 40 of file TCP.php.
Referenced by read(), readLine(), and send().
{ if($this->stream !== null) return; $host = strval($this->config["host"]); $port = strval($this->config["port"]); $address = "tcp://" . $host . ":" . $port; $timeout = intval($this->config["timeout"]); $this->stream = @stream_socket_client($address, $errno, $errstr, $timeout); if($this->stream === FALSE) { throw new TeamSpeak3_Transport_Exception(utf8_encode($errstr), $errno); } @stream_set_timeout($this->stream, $timeout); @stream_set_blocking($this->stream, $this->config["blocking"] ? 1 : 0); }
Disconnects from a remote server.
Reimplemented from TeamSpeak3_Transport_Abstract.
Definition at line 66 of file TCP.php.
References TeamSpeak3_Transport_Abstract\getAdapterType(), and TeamSpeak3_Helper_Signal\getInstance().
{ if($this->stream === null) return; $this->stream = null; TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "Disconnected"); }
TeamSpeak3_Transport_TCP::read | ( | $ | length = 4096 | ) |
Reads data from the stream.
integer | $length |
TeamSpeak3_Transport_Exception |
Reimplemented from TeamSpeak3_Transport_Abstract.
Definition at line 82 of file TCP.php.
References connect(), TeamSpeak3_Transport_Abstract\getAdapterType(), TeamSpeak3_Helper_Signal\getInstance(), and TeamSpeak3_Transport_Abstract\waitForReadyRead().
{ $this->connect(); $this->waitForReadyRead(); $data = @stream_get_contents($this->stream, $length); TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "DataRead", $data); if($data === FALSE) { throw new TeamSpeak3_Transport_Exception("connection to server '" . $this->config["host"] . ":" . $this->config["port"] . "' lost"); } return new TeamSpeak3_Helper_String($data); }
TeamSpeak3_Transport_TCP::readLine | ( | $ | token = "\n" | ) |
Reads a single line of data from the stream.
string | $token |
TeamSpeak3_Transport_Exception |
Definition at line 106 of file TCP.php.
References connect(), TeamSpeak3_Helper_String\factory(), TeamSpeak3_Transport_Abstract\getAdapterType(), TeamSpeak3_Helper_Signal\getInstance(), and TeamSpeak3_Transport_Abstract\waitForReadyRead().
{ $this->connect(); $line = TeamSpeak3_Helper_String::factory(""); while(!$line->endsWith($token)) { $this->waitForReadyRead(); $data = @fgets($this->stream, 4096); TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "DataRead", $data); if($data === FALSE) { if($line->count()) { $line->append($token); } else { throw new TeamSpeak3_Transport_Exception("connection to server '" . $this->config["host"] . ":" . $this->config["port"] . "' lost"); } } else { $line->append($data); } } return $line->trim(); }
TeamSpeak3_Transport_TCP::send | ( | $ | data | ) |
Writes data to the stream.
string | $data |
Reimplemented from TeamSpeak3_Transport_Abstract.
Definition at line 146 of file TCP.php.
References connect(), TeamSpeak3_Transport_Abstract\getAdapterType(), and TeamSpeak3_Helper_Signal\getInstance().
Referenced by sendLine().
{ $this->connect(); @stream_socket_sendto($this->stream, $data); TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "DataSend", $data); }
TeamSpeak3_Transport_TCP::sendLine | ( | $ | data, |
$ | separator = "\n" |
||
) |
Writes a line of data to the stream.
string | $data | |
string | $separator |
Definition at line 162 of file TCP.php.
References send().
{ $size = strlen($data); $pack = 4096; for($seek = 0 ;$seek < $size;) { $rest = $size-$seek; $pack = $rest < $pack ? $rest : $pack; $buff = substr($data, $seek, $pack); $seek = $seek+$pack; if($seek >= $size) $buff .= $separator; $this->send($buff); } }
TeamSpeak3_Transport_Abstract::__sleep | ( | ) | [inherited] |
Commit pending data.
Definition at line 92 of file Abstract.php.
{ return array("config"); }
TeamSpeak3_Transport_Abstract::__wakeup | ( | ) | [inherited] |
Reconnects to the remote server.
Definition at line 102 of file Abstract.php.
References TeamSpeak3_Transport_Abstract\connect().
{ $this->connect(); }
TeamSpeak3_Transport_Abstract::getStream | ( | ) | [inherited] |
Returns the underlying stream resource.
Definition at line 159 of file Abstract.php.
{
return $this->stream;
}
TeamSpeak3_Transport_Abstract::getConfig | ( | $ | key = null , |
$ | default = null |
||
) | [inherited] |
Returns the configuration variables in this adapter.
string | $key | |
mixed | $default |
Definition at line 171 of file Abstract.php.
{ if($key !== null) { return array_key_exists($key, $this->config) ? $this->config[$key] : $default; } return $this->config; }
TeamSpeak3_Transport_Abstract::setAdapter | ( | TeamSpeak3_Adapter_Abstract $ | adapter | ) | [inherited] |
Sets the TeamSpeak3_Adapter_Abstract object using this transport.
TeamSpeak3_Adapter_Abstract | $adapter |
Definition at line 187 of file Abstract.php.
{ $this->adapter = $adapter; }
TeamSpeak3_Transport_Abstract::getAdapter | ( | ) | [inherited] |
Returns the TeamSpeak3_Adapter_Abstract object using this transport.
Definition at line 197 of file Abstract.php.
Referenced by TeamSpeak3_Transport_Abstract\waitForReadyRead().
{
return $this->adapter;
}
TeamSpeak3_Transport_Abstract::getAdapterType | ( | ) | [inherited] |
Returns the adapter type.
Definition at line 207 of file Abstract.php.
References TeamSpeak3_Helper_String\factory().
Referenced by disconnect(), TeamSpeak3_Transport_UDP\disconnect(), read(), TeamSpeak3_Transport_UDP\read(), readLine(), TeamSpeak3_Transport_UDP\send(), send(), and TeamSpeak3_Transport_Abstract\waitForReadyRead().
{ if($this->adapter instanceof TeamSpeak3_Adapter_Abstract) { $string = TeamSpeak3_Helper_String::factory(get_class($this->adapter)); return $string->substr($string->findLast("_"))->replace(array("_", " "), "")->toString(); } return "Unknown"; }
TeamSpeak3_Transport_Abstract::getMetaData | ( | ) | [inherited] |
Returns header/meta data from stream pointer.
TeamSpeak3_Transport_Exception |
Definition at line 225 of file Abstract.php.
{ if($this->stream === null) { throw new TeamSpeak3_Transport_Exception("unable to retrieve header/meta data from stream pointer"); } return stream_get_meta_data($this->stream); }
TeamSpeak3_Transport_Abstract::isConnected | ( | ) | [inherited] |
Returns TRUE if the transport is connected.
Definition at line 240 of file Abstract.php.
Referenced by TeamSpeak3_Adapter_ServerQuery\__destruct(), and TeamSpeak3_Transport_Abstract\waitForReadyRead().
{
return (is_resource($this->stream)) ? TRUE : FALSE;
}
TeamSpeak3_Transport_Abstract::waitForReadyRead | ( | $ | time = 0 | ) | [protected, inherited] |
Blocks a stream until data is available for reading if the stream is connected in non-blocking mode.
integer | $time |
Definition at line 252 of file Abstract.php.
References TeamSpeak3_Transport_Abstract\getAdapter(), TeamSpeak3_Transport_Abstract\getAdapterType(), TeamSpeak3_Helper_Signal\getInstance(), and TeamSpeak3_Transport_Abstract\isConnected().
Referenced by read(), TeamSpeak3_Transport_UDP\read(), and readLine().
{ if(!$this->isConnected() || $this->config["blocking"]) return; do { $read = array($this->stream); $null = null; if($time) { TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "WaitTimeout", $time, $this->getAdapter()); } $time = $time+$this->config["timeout"]; } while(@stream_select($read, $null, $null, $this->config["timeout"]) == 0); }