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

Helper class for signal slots. More...

Public Member Functions

 emit ($signal, $params=null)
 Emits a signal with a given set of parameters. More...
 
 getCallbackHash ($callback)
 Generates a MD5 hash based on a given callback. More...
 
 subscribe ($signal, $callback)
 Subscribes to a signal and returns the signal handler. More...
 
 unsubscribe ($signal, $callback=null)
 Unsubscribes from a signal. More...
 
 getSignals ()
 Returns all registered signals. More...
 
 hasHandlers ($signal)
 Returns TRUE there are slots subscribed for a specified signal. More...
 
 getHandlers ($signal)
 Returns all slots for a specified signal. More...
 
 clearHandlers ($signal)
 Clears all slots for a specified signal. More...
 

Static Public Member Functions

static getInstance ()
 Returns a singleton instance of TeamSpeak3_Helper_Signal. More...
 

Protected Attributes

 $sigslots = array()
 

Static Protected Attributes

static $instance = null
 

Detailed Description

Helper class for signal slots.

Definition at line 32 of file Signal.php.

Member Function Documentation

TeamSpeak3_Helper_Signal::emit (   $signal,
  $params = null 
)

Emits a signal with a given set of parameters.

Parameters
string$signal
mixed$params
Returns
mixed

Definition at line 55 of file Signal.php.

References hasHandlers().

56  {
57  if(!$this->hasHandlers($signal))
58  {
59  return;
60  }
61 
62  if(!is_array($params))
63  {
64  $params = func_get_args();
65  $params = array_slice($params, 1);
66  }
67 
68  foreach($this->sigslots[$signal] as $slot)
69  {
70  $return = $slot->call($params);
71  }
72 
73  return $return;
74  }
TeamSpeak3_Helper_Signal::getCallbackHash (   $callback)

Generates a MD5 hash based on a given callback.

Parameters
mixed$callback
string
Returns
void

Definition at line 83 of file Signal.php.

Referenced by subscribe(), and unsubscribe().

84  {
85  if(!is_callable($callback, TRUE, $callable_name))
86  {
87  throw new TeamSpeak3_Helper_Signal_Exception("invalid callback specified");
88  }
89 
90  return md5($callable_name);
91  }
TeamSpeak3_Helper_Signal::subscribe (   $signal,
  $callback 
)

Subscribes to a signal and returns the signal handler.

Parameters
string$signal
mixed$callback
Returns
TeamSpeak3_Helper_Signal_Handler

Definition at line 100 of file Signal.php.

References getCallbackHash().

101  {
102  if(empty($this->sigslots[$signal]))
103  {
104  $this->sigslots[$signal] = array();
105  }
106 
107  $index = $this->getCallbackHash($callback);
108 
109  if(!array_key_exists($index, $this->sigslots[$signal]))
110  {
111  $this->sigslots[$signal][$index] = new TeamSpeak3_Helper_Signal_Handler($signal, $callback);
112  }
113 
114  return $this->sigslots[$signal][$index];
115  }
TeamSpeak3_Helper_Signal::unsubscribe (   $signal,
  $callback = null 
)

Unsubscribes from a signal.

Parameters
string$signal
mixed$callback
Returns
void

Definition at line 124 of file Signal.php.

References getCallbackHash(), and hasHandlers().

125  {
126  if(!$this->hasHandlers($signal))
127  {
128  return;
129  }
130 
131  if($callback !== null)
132  {
133  $index = $this->getCallbackHash($callback);
134 
135  if(!array_key_exists($index, $this->sigslots[$signal]))
136  {
137  return;
138  }
139 
140  unset($this->sigslots[$signal][$index]);
141  }
142  else
143  {
144  unset($this->sigslots[$signal]);
145  }
146  }
TeamSpeak3_Helper_Signal::getSignals ( )

Returns all registered signals.

Returns
array

Definition at line 153 of file Signal.php.

154  {
155  return array_keys($this->sigslots);
156  }
TeamSpeak3_Helper_Signal::hasHandlers (   $signal)

Returns TRUE there are slots subscribed for a specified signal.

Parameters
string$signal
Returns
boolean

Definition at line 164 of file Signal.php.

Referenced by clearHandlers(), emit(), getHandlers(), and unsubscribe().

165  {
166  return empty($this->sigslots[$signal]) ? FALSE : TRUE;
167  }
TeamSpeak3_Helper_Signal::getHandlers (   $signal)

Returns all slots for a specified signal.

Parameters
string$signal
Returns
array

Definition at line 175 of file Signal.php.

References hasHandlers().

176  {
177  if(!$this->hasHandlers($signal))
178  {
179  return $this->sigslots[$signal];
180  }
181 
182  return array();
183  }
TeamSpeak3_Helper_Signal::clearHandlers (   $signal)

Clears all slots for a specified signal.

Parameters
string$signal
Returns
void

Definition at line 191 of file Signal.php.

References hasHandlers().

192  {
193  if(!$this->hasHandlers($signal))
194  {
195  unset($this->sigslots[$signal]);
196  }
197  }
static TeamSpeak3_Helper_Signal::getInstance ( )
static

Returns a singleton instance of TeamSpeak3_Helper_Signal.

Returns
TeamSpeak3_Helper_Signal

Definition at line 204 of file Signal.php.

Referenced by TeamSpeak3_Exception\__construct(), TeamSpeak3_Adapter_ServerQuery_Event\__construct(), TeamSpeak3_Transport_UDP\disconnect(), TeamSpeak3_Transport_TCP\disconnect(), TeamSpeak3_Adapter_FileTransfer\download(), TeamSpeak3_Adapter_ServerQuery_Reply\fetchError(), TeamSpeak3_Adapter_FileTransfer\init(), TeamSpeak3_Node_Host\login(), TeamSpeak3_Node_Host\logout(), TeamSpeak3_Node_Server\permReset(), TeamSpeak3_Node_Server\privilegeKeyCreate(), TeamSpeak3_Transport_UDP\read(), TeamSpeak3_Transport_TCP\read(), TeamSpeak3_Transport_TCP\readLine(), TeamSpeak3_Adapter_ServerQuery\request(), TeamSpeak3_Adapter_TSDNS\resolve(), TeamSpeak3_Transport_UDP\send(), TeamSpeak3_Transport_TCP\send(), TeamSpeak3_Node_Host\serverCreate(), TeamSpeak3_Node_Host\serverDelete(), TeamSpeak3_Node_Host\serverSelect(), TeamSpeak3_Node_Host\serverSelectByPort(), TeamSpeak3_Node_Host\serverStart(), TeamSpeak3_Node_Host\serverStop(), TeamSpeak3_Node_Host\serverStopProcess(), TeamSpeak3_Node_Server\snapshotDeploy(), TeamSpeak3_Adapter_FileTransfer\syn(), TeamSpeak3_Adapter_TSDNS\syn(), TeamSpeak3_Adapter_Blacklist\syn(), TeamSpeak3_Adapter_ServerQuery\syn(), TeamSpeak3_Adapter_Update\syn(), TeamSpeak3_Node_Server\transferInitDownload(), TeamSpeak3_Node_Server\transferInitUpload(), TeamSpeak3_Adapter_FileTransfer\upload(), and TeamSpeak3_Transport_Abstract\waitForReadyRead().

205  {
206  if(self::$instance === null)
207  {
208  self::$instance = new self();
209  }
210 
211  return self::$instance;
212  }

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