TeamSpeak 3 PHP Framework  1.1.23
Copyright © Planet TeamSpeak. All rights reserved.
 All Classes Namespaces Files Functions Variables Pages
TeamSpeak3_Transport_UDP Class Reference

Class for connecting to a remote server through UDP. More...

+ Inheritance diagram for TeamSpeak3_Transport_UDP:

Public Member Functions

 connect ()
 Connects to a remote server. More...
 
 disconnect ()
 Disconnects from a remote server. More...
 
 read ($length=4096)
 Reads data from the stream. More...
 
 send ($data)
 Writes data to the stream. More...
 
 __sleep ()
 Commit pending data. More...
 
 __wakeup ()
 Reconnects to the remote server. More...
 
 getStream ()
 Returns the underlying stream resource. More...
 
 getConfig ($key=null, $default=null)
 Returns the configuration variables in this adapter. More...
 
 setAdapter (TeamSpeak3_Adapter_Abstract $adapter)
 Sets the TeamSpeak3_Adapter_Abstract object using this transport. More...
 
 getAdapter ()
 Returns the TeamSpeak3_Adapter_Abstract object using this transport. More...
 
 getAdapterType ()
 Returns the adapter type. More...
 
 getMetaData ()
 Returns header/meta data from stream pointer. More...
 
 isConnected ()
 Returns TRUE if the transport is connected. More...
 

Protected Member Functions

 waitForReadyRead ($time=0)
 Blocks a stream until data is available for reading if the stream is connected in non-blocking mode. More...
 

Protected Attributes

 $config = null
 
 $stream = null
 
 $adapter = null
 

Detailed Description

Class for connecting to a remote server through UDP.

Definition at line 32 of file UDP.php.

Member Function Documentation

TeamSpeak3_Transport_UDP::connect ( )

Connects to a remote server.

Exceptions
TeamSpeak3_Transport_Exception
Returns
void

Definition at line 40 of file UDP.php.

References TeamSpeak3_Helper_String\factory().

Referenced by read(), and send().

41  {
42  if($this->stream !== null) return;
43 
44  $host = strval($this->config["host"]);
45  $port = strval($this->config["port"]);
46 
47  $address = "udp://" . $host . ":" . $port;
48  $timeout = intval($this->config["timeout"]);
49 
50  $this->stream = @stream_socket_client($address, $errno, $errstr, $timeout);
51 
52  if($this->stream === FALSE)
53  {
54  throw new TeamSpeak3_Transport_Exception(TeamSpeak3_Helper_String::factory($errstr)->toUtf8()->toString(), $errno);
55  }
56 
57  @stream_set_timeout($this->stream, $timeout);
58  @stream_set_blocking($this->stream, $this->config["blocking"] ? 1 : 0);
59  }
TeamSpeak3_Transport_UDP::disconnect ( )

Disconnects from a remote server.

Returns
void

Definition at line 66 of file UDP.php.

References TeamSpeak3_Transport_Abstract\getAdapterType(), and TeamSpeak3_Helper_Signal\getInstance().

67  {
68  if($this->stream === null) return;
69 
70  $this->stream = null;
71 
72  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "Disconnected");
73  }
TeamSpeak3_Transport_UDP::read (   $length = 4096)

Reads data from the stream.

Parameters
integer$length
Exceptions
TeamSpeak3_Transport_Exception
Returns
TeamSpeak3_Helper_String

Definition at line 82 of file UDP.php.

References connect(), TeamSpeak3_Transport_Abstract\getAdapterType(), TeamSpeak3_Helper_Signal\getInstance(), and TeamSpeak3_Transport_Abstract\waitForReadyRead().

83  {
84  $this->connect();
85  $this->waitForReadyRead();
86 
87  $data = @fread($this->stream, $length);
88 
89  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "DataRead", $data);
90 
91  if($data === FALSE)
92  {
93  throw new TeamSpeak3_Transport_Exception("connection to server '" . $this->config["host"] . ":" . $this->config["port"] . "' lost");
94  }
95 
96  return new TeamSpeak3_Helper_String($data);
97  }
TeamSpeak3_Transport_UDP::send (   $data)

Writes data to the stream.

Parameters
string$data
Returns
void

Definition at line 105 of file UDP.php.

References connect(), TeamSpeak3_Transport_Abstract\getAdapterType(), and TeamSpeak3_Helper_Signal\getInstance().

106  {
107  $this->connect();
108 
109  @stream_socket_sendto($this->stream, $data);
110 
111  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "DataSend", $data);
112  }
TeamSpeak3_Transport_Abstract::__sleep ( )
inherited

Commit pending data.

Returns
array

Definition at line 92 of file Abstract.php.

93  {
94  return array("config");
95  }
TeamSpeak3_Transport_Abstract::__wakeup ( )
inherited

Reconnects to the remote server.

Returns
void

Definition at line 102 of file Abstract.php.

References TeamSpeak3_Transport_Abstract\connect().

103  {
104  $this->connect();
105  }
TeamSpeak3_Transport_Abstract::getStream ( )
inherited

Returns the underlying stream resource.

Returns
resource

Definition at line 159 of file Abstract.php.

160  {
161  return $this->stream;
162  }
TeamSpeak3_Transport_Abstract::getConfig (   $key = null,
  $default = null 
)
inherited

Returns the configuration variables in this adapter.

Parameters
string$key
mixed$default
Returns
array

Definition at line 171 of file Abstract.php.

172  {
173  if($key !== null)
174  {
175  return array_key_exists($key, $this->config) ? $this->config[$key] : $default;
176  }
177 
178  return $this->config;
179  }
TeamSpeak3_Transport_Abstract::setAdapter ( TeamSpeak3_Adapter_Abstract  $adapter)
inherited

Sets the TeamSpeak3_Adapter_Abstract object using this transport.

Parameters
TeamSpeak3_Adapter_Abstract$adapter
Returns
void

Definition at line 187 of file Abstract.php.

188  {
189  $this->adapter = $adapter;
190  }
TeamSpeak3_Transport_Abstract::getAdapter ( )
inherited

Returns the TeamSpeak3_Adapter_Abstract object using this transport.

Returns
TeamSpeak3_Adapter_Abstract

Definition at line 197 of file Abstract.php.

Referenced by TeamSpeak3_Transport_Abstract\waitForReadyRead().

198  {
199  return $this->adapter;
200  }
TeamSpeak3_Transport_Abstract::getAdapterType ( )
inherited

Returns the adapter type.

Returns
string

Definition at line 207 of file Abstract.php.

References TeamSpeak3_Helper_String\factory().

Referenced by TeamSpeak3_Transport_TCP\disconnect(), disconnect(), read(), TeamSpeak3_Transport_TCP\read(), TeamSpeak3_Transport_TCP\readLine(), send(), TeamSpeak3_Transport_TCP\send(), and TeamSpeak3_Transport_Abstract\waitForReadyRead().

208  {
209  if($this->adapter instanceof TeamSpeak3_Adapter_Abstract)
210  {
211  $string = TeamSpeak3_Helper_String::factory(get_class($this->adapter));
212 
213  return $string->substr($string->findLast("_"))->replace(array("_", " "), "")->toString();
214  }
215 
216  return "Unknown";
217  }
TeamSpeak3_Transport_Abstract::getMetaData ( )
inherited

Returns header/meta data from stream pointer.

Exceptions
TeamSpeak3_Transport_Exception
Returns
array

Definition at line 225 of file Abstract.php.

226  {
227  if($this->stream === null)
228  {
229  throw new TeamSpeak3_Transport_Exception("unable to retrieve header/meta data from stream pointer");
230  }
231 
232  return stream_get_meta_data($this->stream);
233  }
TeamSpeak3_Transport_Abstract::isConnected ( )
inherited

Returns TRUE if the transport is connected.

Returns
boolean

Definition at line 240 of file Abstract.php.

Referenced by TeamSpeak3_Adapter_ServerQuery\__destruct(), and TeamSpeak3_Transport_Abstract\waitForReadyRead().

241  {
242  return (is_resource($this->stream)) ? TRUE : FALSE;
243  }
TeamSpeak3_Transport_Abstract::waitForReadyRead (   $time = 0)
protectedinherited

Blocks a stream until data is available for reading if the stream is connected in non-blocking mode.

Parameters
integer$time
Returns
void

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 TeamSpeak3_Transport_TCP\read(), read(), and TeamSpeak3_Transport_TCP\readLine().

253  {
254  if(!$this->isConnected() || $this->config["blocking"]) return;
255 
256  do {
257  $read = array($this->stream);
258  $null = null;
259 
260  if($time)
261  {
262  TeamSpeak3_Helper_Signal::getInstance()->emit(strtolower($this->getAdapterType()) . "WaitTimeout", $time, $this->getAdapter());
263  }
264 
265  $time = $time+$this->config["timeout"];
266  } while(@stream_select($read, $null, $null, $this->config["timeout"]) == 0);
267  }

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