mirror of
https://github.com/Mibew/tray.git
synced 2025-01-22 18:10:34 +03:00
Update EventDispatcher class
There is no need to register events any more.
This commit is contained in:
parent
62728e608d
commit
219aa4c9b1
@ -31,37 +31,7 @@ class EventDispatcherTest extends PHPUnit_Framework_TestCase {
|
|||||||
/**
|
/**
|
||||||
* @depends testGetInstance
|
* @depends testGetInstance
|
||||||
*/
|
*/
|
||||||
public function testRegisterEvent($dispatcher) {
|
|
||||||
// Try to register new event
|
|
||||||
$this->assertTrue($dispatcher->registerEvent('some_test_event'));
|
|
||||||
$this->assertTrue($dispatcher->registerEvent('some_another_test_event'));
|
|
||||||
|
|
||||||
// Try to register already registered event
|
|
||||||
// Following code wait for trigger user error, which converts by PHPUnit to an
|
|
||||||
// Exception
|
|
||||||
try{
|
|
||||||
$dispatcher->registerEvent('some_test_event');
|
|
||||||
$this->fail("Error expected!");
|
|
||||||
} catch(Exception $e) {}
|
|
||||||
return $dispatcher;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @depends testRegisterEvent
|
|
||||||
*/
|
|
||||||
public function testAttachListener($dispatcher) {
|
public function testAttachListener($dispatcher) {
|
||||||
// Try to attach listener to unregistered event
|
|
||||||
// Following code wait for trigger user error, which converts by PHPUnit to an
|
|
||||||
// Exception
|
|
||||||
try{
|
|
||||||
$dispatcher->attachListener(
|
|
||||||
'unreginstered_event',
|
|
||||||
self::$plugin,
|
|
||||||
'testEventListener'
|
|
||||||
);
|
|
||||||
$this->fail("Error expected!");
|
|
||||||
} catch(Exception $e) {}
|
|
||||||
|
|
||||||
// Try to Attach wrong method as listener to event
|
// Try to Attach wrong method as listener to event
|
||||||
// Following code wait for trigger user error, which converts by PHPUnit to an
|
// Following code wait for trigger user error, which converts by PHPUnit to an
|
||||||
// Exception
|
// Exception
|
||||||
@ -74,7 +44,7 @@ class EventDispatcherTest extends PHPUnit_Framework_TestCase {
|
|||||||
$this->fail("Error expected!");
|
$this->fail("Error expected!");
|
||||||
} catch(Exception $e) {}
|
} catch(Exception $e) {}
|
||||||
|
|
||||||
// Try to attach listener to registered event
|
// Try to attach listener to event
|
||||||
$this->assertTrue(
|
$this->assertTrue(
|
||||||
$dispatcher->attachListener(
|
$dispatcher->attachListener(
|
||||||
'some_test_event',
|
'some_test_event',
|
||||||
@ -83,7 +53,7 @@ class EventDispatcherTest extends PHPUnit_Framework_TestCase {
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
||||||
// Try to attach listener to registered event
|
// Try to attach listener to event
|
||||||
$this->assertTrue(
|
$this->assertTrue(
|
||||||
$dispatcher->attachListener(
|
$dispatcher->attachListener(
|
||||||
'some_another_test_event',
|
'some_another_test_event',
|
||||||
@ -99,18 +69,6 @@ class EventDispatcherTest extends PHPUnit_Framework_TestCase {
|
|||||||
* @depends testAttachListener
|
* @depends testAttachListener
|
||||||
*/
|
*/
|
||||||
public function testDetachListener($dispatcher) {
|
public function testDetachListener($dispatcher) {
|
||||||
// Try to detach listener for unregistered event.
|
|
||||||
// Following code wait for trigger user error, which converts by PHPUnit to an
|
|
||||||
// Exception
|
|
||||||
try{
|
|
||||||
$dispatcher->detachListener(
|
|
||||||
'unreginstered_event',
|
|
||||||
self::$plugin,
|
|
||||||
'testEventListener'
|
|
||||||
);
|
|
||||||
$this->fail("Error expected!");
|
|
||||||
} catch(Exception $e) {}
|
|
||||||
|
|
||||||
// Try to detach listner that was not attached to registerd event
|
// Try to detach listner that was not attached to registerd event
|
||||||
$this->assertFalse(
|
$this->assertFalse(
|
||||||
$dispatcher->detachListener(
|
$dispatcher->detachListener(
|
||||||
@ -135,14 +93,6 @@ class EventDispatcherTest extends PHPUnit_Framework_TestCase {
|
|||||||
* @depends testDetachListener
|
* @depends testDetachListener
|
||||||
*/
|
*/
|
||||||
public function testTriggerEvent($dispatcher) {
|
public function testTriggerEvent($dispatcher) {
|
||||||
// Try to trigger unregistered event
|
|
||||||
// Following code wait for trigger user error, which converts by PHPUnit to an
|
|
||||||
// Exception
|
|
||||||
try{
|
|
||||||
$dispatcher->triggerEvent('unregistered_event');
|
|
||||||
$this->fail("Error expected!");
|
|
||||||
} catch(Exception $e) {}
|
|
||||||
|
|
||||||
// Try to trigger registered event
|
// Try to trigger registered event
|
||||||
$test_array = array();
|
$test_array = array();
|
||||||
$dispatcher->triggerEvent('some_another_test_event', $test_array);
|
$dispatcher->triggerEvent('some_another_test_event', $test_array);
|
||||||
|
@ -5,28 +5,16 @@
|
|||||||
*/
|
*/
|
||||||
Class PhpunitAutotestPluginManagerPlugin extends Plugin{
|
Class PhpunitAutotestPluginManagerPlugin extends Plugin{
|
||||||
|
|
||||||
public $eventsRegistered = false;
|
|
||||||
public $listenersRegistered = false;
|
public $listenersRegistered = false;
|
||||||
|
|
||||||
public function getWeight() {
|
public function getWeight() {
|
||||||
return 10;
|
return 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function registerEvents() {
|
|
||||||
$this->eventsRegistered = true;
|
|
||||||
$this->checkRegistration();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function registerListeners() {
|
public function registerListeners() {
|
||||||
$this->listenersRegistered = true;
|
$this->listenersRegistered = true;
|
||||||
$this->checkRegistration();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function checkRegistration() {
|
|
||||||
if ($this->eventsRegistered && $this->listenersRegistered) {
|
|
||||||
$GLOBALS['phpunit_autotest_plugin_manager'] = true;
|
$GLOBALS['phpunit_autotest_plugin_manager'] = true;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public function testEventListener(&$vars) {
|
public function testEventListener(&$vars) {
|
||||||
$vars['test'] = 'some_test_value';
|
$vars['test'] = 'some_test_value';
|
||||||
|
@ -19,13 +19,8 @@ Class RequestProcessorTestPlugin extends Plugin{
|
|||||||
return 10;
|
return 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function registerEvents() {
|
|
||||||
$dispatcher = EventDispatcher::getInstance();
|
|
||||||
$dispatcher->registerEvent('testRequestProcessorCallback');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function registerListeners() {
|
public function registerListeners() {
|
||||||
$registered_events = array(
|
$processor_events = array(
|
||||||
'testRequestReceived',
|
'testRequestReceived',
|
||||||
'testRequestError',
|
'testRequestError',
|
||||||
'testResponseReceived',
|
'testResponseReceived',
|
||||||
@ -34,7 +29,7 @@ Class RequestProcessorTestPlugin extends Plugin{
|
|||||||
'testRequestProcessorCallback'
|
'testRequestProcessorCallback'
|
||||||
);
|
);
|
||||||
$dispatcher = EventDispatcher::getInstance();
|
$dispatcher = EventDispatcher::getInstance();
|
||||||
foreach ($registered_events as $event) {
|
foreach ($processor_events as $event) {
|
||||||
$dispatcher->attachListener($event, $this, $event);
|
$dispatcher->attachListener($event, $this, $event);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -72,16 +72,15 @@ Class EventDispatcher {
|
|||||||
* @see Plugin::getWeight()
|
* @see Plugin::getWeight()
|
||||||
*/
|
*/
|
||||||
public function attachListener($event_name, Plugin $plugin, $listener, $priority = null){
|
public function attachListener($event_name, Plugin $plugin, $listener, $priority = null){
|
||||||
// Check event exists
|
|
||||||
if (! array_key_exists($event_name, $this->events)) {
|
|
||||||
trigger_error("Event '{$event_name}' does not exists!", E_USER_WARNING);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// Check method is callable
|
// Check method is callable
|
||||||
if (! is_callable(array($plugin, $listener))) {
|
if (! is_callable(array($plugin, $listener))) {
|
||||||
trigger_error("Method '{$listener}' is not callable!", E_USER_WARNING);
|
trigger_error("Method '{$listener}' is not callable!", E_USER_WARNING);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
// Create empty array for event listener if it not exists
|
||||||
|
if (! array_key_exists($event_name, $this->events)) {
|
||||||
|
$this->events[$event_name] = array();
|
||||||
|
}
|
||||||
// Check priority
|
// Check priority
|
||||||
if (is_null($priority)) {
|
if (is_null($priority)) {
|
||||||
$priority = $plugin->getWeight();
|
$priority = $plugin->getWeight();
|
||||||
@ -106,7 +105,6 @@ Class EventDispatcher {
|
|||||||
public function detachListener($event_name, Plugin $plugin, $listener){
|
public function detachListener($event_name, Plugin $plugin, $listener){
|
||||||
// Check event exists
|
// Check event exists
|
||||||
if (! array_key_exists($event_name, $this->events)) {
|
if (! array_key_exists($event_name, $this->events)) {
|
||||||
trigger_error("Event '{$event_name}' does not exists!", E_USER_WARNING);
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// Search event and $plugin->$listener
|
// Search event and $plugin->$listener
|
||||||
@ -120,23 +118,6 @@ Class EventDispatcher {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Registers new event
|
|
||||||
*
|
|
||||||
* @param string $event_name Event's name
|
|
||||||
* @return boolean true on success or false on failure
|
|
||||||
*/
|
|
||||||
public function registerEvent($event_name){
|
|
||||||
// Check event exists
|
|
||||||
if (array_key_exists($event_name, $this->events)) {
|
|
||||||
trigger_error("Event '{$event_name}' already exists!", E_USER_WARNING);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
// register event
|
|
||||||
$this->events[$event_name] = array();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Triggers the event
|
* Triggers the event
|
||||||
*
|
*
|
||||||
@ -145,10 +126,9 @@ Class EventDispatcher {
|
|||||||
* @return boolean true on success or false on failure
|
* @return boolean true on success or false on failure
|
||||||
*/
|
*/
|
||||||
public function triggerEvent($event_name, &$arguments = array()){
|
public function triggerEvent($event_name, &$arguments = array()){
|
||||||
// Check event exists
|
// Check event listeners exists
|
||||||
if (! array_key_exists($event_name, $this->events)) {
|
if (! array_key_exists($event_name, $this->events)) {
|
||||||
trigger_error("Event '{$event_name}' does not exists!", E_USER_WARNING);
|
return true;
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
// Sorting listeners by priority
|
// Sorting listeners by priority
|
||||||
uksort($this->events[$event_name], 'strnatcmp');
|
uksort($this->events[$event_name], 'strnatcmp');
|
||||||
@ -158,6 +138,7 @@ Class EventDispatcher {
|
|||||||
$listener = $event['listener'];
|
$listener = $event['listener'];
|
||||||
$plugin->$listener($arguments);
|
$plugin->$listener($arguments);
|
||||||
}
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -41,11 +41,6 @@ abstract Class Plugin {
|
|||||||
*/
|
*/
|
||||||
abstract public function getWeight();
|
abstract public function getWeight();
|
||||||
|
|
||||||
/**
|
|
||||||
* Register events
|
|
||||||
*/
|
|
||||||
abstract public function registerEvents();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register listeners
|
* Register listeners
|
||||||
*
|
*
|
||||||
|
@ -146,7 +146,6 @@ Class PluginManager {
|
|||||||
uksort($loading_queue, 'strnatcmp');
|
uksort($loading_queue, 'strnatcmp');
|
||||||
// Add events and listeners
|
// Add events and listeners
|
||||||
foreach ($loading_queue as $plugin) {
|
foreach ($loading_queue as $plugin) {
|
||||||
$plugin->registerEvents();
|
|
||||||
$plugin->registerListeners();
|
$plugin->registerListeners();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@
|
|||||||
/**
|
/**
|
||||||
* Implements abstract class for request processing
|
* Implements abstract class for request processing
|
||||||
*
|
*
|
||||||
* Register events (see RequestProcessor::registerEvents() for details):
|
* Following events can be triggered by the class:
|
||||||
* - <eventPrefix>RequestReceived
|
* - <eventPrefix>RequestReceived
|
||||||
* - <eventPrefix>RequestError
|
* - <eventPrefix>RequestError
|
||||||
* - <eventPrefix>ResponseReceived
|
* - <eventPrefix>ResponseReceived
|
||||||
@ -27,8 +27,62 @@
|
|||||||
*
|
*
|
||||||
* <eventPrefix> variable specifies in RequestProcessor::__construct()
|
* <eventPrefix> variable specifies in RequestProcessor::__construct()
|
||||||
*
|
*
|
||||||
|
*
|
||||||
|
* Full description of triggered events:
|
||||||
|
*
|
||||||
|
* 1. "<eventPrefix>RequestReceived" - triggers when request decoded and
|
||||||
|
* validate successfully, before execution functions from request.
|
||||||
|
*
|
||||||
|
* An associative array passed to event handler have following keys:
|
||||||
|
* - 'package' : decoded and validated package array. See Mibew API for details
|
||||||
|
* of the package structure
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* 2. "<eventPrefix>RequestError" - triggers when error occurs during received
|
||||||
|
* request processing.
|
||||||
|
*
|
||||||
|
* An associative array passed to event handler have following keys:
|
||||||
|
* - 'exception' : an object of Exception (or inherited) class related to
|
||||||
|
* occurred error.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* 3. "<eventPrefix>ResponseReceived" - triggers when request sent successfully,
|
||||||
|
* and response received.
|
||||||
|
*
|
||||||
|
* An associative array passed to event handler have following keys:
|
||||||
|
* - 'package' : decoded and validated response package array. See Mibew API
|
||||||
|
* for details of the package structure.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* 4. "<eventPrefix>CallError" - triggers when error occurs in
|
||||||
|
* call() method.
|
||||||
|
*
|
||||||
|
* An associative array passed to event handler have following keys:
|
||||||
|
* - 'exception' : an object of Exception (or inherited) class related to
|
||||||
|
* occurred error.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* 5. "<eventPrefix>FunctionCall" - triggers when function from request calls.
|
||||||
|
*
|
||||||
|
* An associative array passed to event handler is 'function' array. See Mibew
|
||||||
|
* API for detail of the 'function' array structure.
|
||||||
|
*
|
||||||
|
* If function wants to return some results, it should add results to the
|
||||||
|
* 'results' element of the function array.
|
||||||
|
*
|
||||||
|
* Example of the event handler:
|
||||||
|
* <code>
|
||||||
|
* public function callHandler(&$function) {
|
||||||
|
* if ($function['function'] == 'microtime') {
|
||||||
|
* $as_float = empty($function['arguments']['as_float'])
|
||||||
|
* ? false
|
||||||
|
* : $function['arguments']['as_float'];
|
||||||
|
* $function['results']['time'] = microtime($as_float);
|
||||||
|
* }
|
||||||
|
* }
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
* @see RequestProcessor::__construct()
|
* @see RequestProcessor::__construct()
|
||||||
* @see RequestProcessor::registerEvents()
|
|
||||||
*/
|
*/
|
||||||
abstract class RequestProcessor {
|
abstract class RequestProcessor {
|
||||||
|
|
||||||
@ -39,7 +93,7 @@ abstract class RequestProcessor {
|
|||||||
protected $mibewAPI = null;
|
protected $mibewAPI = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prefix that uses for all registered by the class events.
|
* Prefix that uses for all events triggered by the class.
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
protected $eventPrefix = '';
|
protected $eventPrefix = '';
|
||||||
@ -65,8 +119,9 @@ abstract class RequestProcessor {
|
|||||||
* - 'trusted_signatures': array of trusted signatures. Uses for identify another
|
* - 'trusted_signatures': array of trusted signatures. Uses for identify another
|
||||||
* side of interaction.
|
* side of interaction.
|
||||||
* And may contains following (if not default values will be used)
|
* And may contains following (if not default values will be used)
|
||||||
* - 'event_prefix': prefix that uses for all registered by the class events. The default value is the class
|
* - 'event_prefix': prefix that uses for all events triggered by the
|
||||||
* name with first character in lower case
|
* class. The default value is the class name with first character in
|
||||||
|
* lower case
|
||||||
*/
|
*/
|
||||||
public function __construct($config) {
|
public function __construct($config) {
|
||||||
// Check signature
|
// Check signature
|
||||||
@ -90,9 +145,6 @@ abstract class RequestProcessor {
|
|||||||
|
|
||||||
// Store config
|
// Store config
|
||||||
$this->config = $config;
|
$this->config = $config;
|
||||||
|
|
||||||
// Register Events
|
|
||||||
$this->registerEvents();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -260,70 +312,6 @@ abstract class RequestProcessor {
|
|||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Register events
|
|
||||||
*
|
|
||||||
* Registered Events:
|
|
||||||
*
|
|
||||||
* 1. "<eventPrefix>RequestReceived" - triggers when request decoded and validate
|
|
||||||
* successfully, before execution functions from request.
|
|
||||||
*
|
|
||||||
* An associative array passed to event handler have following keys:
|
|
||||||
* - 'package' : decoded and validated package array. See Mibew API for details of the
|
|
||||||
* package structure
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* 2. "<eventPrefix>RequestError" - triggers when error occurs during received
|
|
||||||
* request processing.
|
|
||||||
*
|
|
||||||
* An associative array passed to event handler have following keys:
|
|
||||||
* - 'exception' : an object of Exception (or inherited) class related to occurred error.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* 3. "<eventPrefix>ResponseReceived" - triggers when request sent successfully, and
|
|
||||||
* response received.
|
|
||||||
*
|
|
||||||
* An associative array passed to event handler have following keys:
|
|
||||||
* - 'package' : decoded and validated response package array. See Mibew API for details of
|
|
||||||
* the package structure.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* 4. "<eventPrefix>CallError" - triggers when error occurs in
|
|
||||||
* call() method.
|
|
||||||
*
|
|
||||||
* An associative array passed to event handler have following keys:
|
|
||||||
* - 'exception' : an object of Exception (or inherited) class related to occurred error.
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* 5. "<eventPrefix>FunctionCall" - triggers when function from request calls.
|
|
||||||
*
|
|
||||||
* An associative array passed to event handler is 'function' array. See Mibew API for
|
|
||||||
* detail of the 'function' array structure.
|
|
||||||
*
|
|
||||||
* If function wants to return some results, it should add results to the 'results' element
|
|
||||||
* of the function array.
|
|
||||||
*
|
|
||||||
* Example of the event handler:
|
|
||||||
* <code>
|
|
||||||
* public function callHandler(&$function) {
|
|
||||||
* if ($function['function'] == 'microtime') {
|
|
||||||
* $as_float = empty($function['arguments']['as_float'])
|
|
||||||
* ? false
|
|
||||||
* : $function['arguments']['as_float'];
|
|
||||||
* $function['results']['time'] = microtime($as_float);
|
|
||||||
* }
|
|
||||||
* }
|
|
||||||
* </code>
|
|
||||||
*/
|
|
||||||
protected function registerEvents() {
|
|
||||||
$dispatcher = EventDispatcher::getInstance();
|
|
||||||
$dispatcher->registerEvent($this->eventPrefix . 'RequestReceived');
|
|
||||||
$dispatcher->registerEvent($this->eventPrefix . 'RequestError');
|
|
||||||
$dispatcher->registerEvent($this->eventPrefix . 'ResponseReceived');
|
|
||||||
$dispatcher->registerEvent($this->eventPrefix . 'CallError');
|
|
||||||
$dispatcher->registerEvent($this->eventPrefix . 'FunctionCall');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Process request
|
* Process request
|
||||||
*
|
*
|
||||||
@ -460,7 +448,6 @@ abstract class RequestProcessor {
|
|||||||
* It calls before '<eventPrefix>FunctionCall' event triggers.
|
* It calls before '<eventPrefix>FunctionCall' event triggers.
|
||||||
*
|
*
|
||||||
* @param array &$func Function array equals to array, passed to the '<eventPrefix>FunctionCall' event.
|
* @param array &$func Function array equals to array, passed to the '<eventPrefix>FunctionCall' event.
|
||||||
* @see RequestProcessor::registerEvents()
|
|
||||||
* @todo Create some unit tests
|
* @todo Create some unit tests
|
||||||
*/
|
*/
|
||||||
protected function processorCall(&$func) {
|
protected function processorCall(&$func) {
|
||||||
|
@ -18,14 +18,16 @@
|
|||||||
/**
|
/**
|
||||||
* Incapsulates thread api and thread processing functions.
|
* Incapsulates thread api and thread processing functions.
|
||||||
*
|
*
|
||||||
* Register events (see RequestProcessor::registerEvents() for details):
|
* Event triggered by the class (see description of the RequestProcessor class
|
||||||
|
* for details):
|
||||||
* - threadRequestReceived
|
* - threadRequestReceived
|
||||||
* - threadReceiveRequestError
|
* - threadReceiveRequestError
|
||||||
* - threadCallError
|
* - threadCallError
|
||||||
* - threadFunctionCall
|
* - threadFunctionCall
|
||||||
*
|
*
|
||||||
* WARNING:
|
* WARNING:
|
||||||
* threadResponseReceived registered but never called because of asynchronous nature of Core-to-Window interaction
|
* threadResponseReceived registered but never called because of asynchronous
|
||||||
|
* nature of Core-to-Window interaction
|
||||||
*
|
*
|
||||||
* Implements Singleton pattern
|
* Implements Singleton pattern
|
||||||
*/
|
*/
|
||||||
|
@ -18,7 +18,8 @@
|
|||||||
/**
|
/**
|
||||||
* Incapsulates awaiting users list api related functions.
|
* Incapsulates awaiting users list api related functions.
|
||||||
*
|
*
|
||||||
* Register events (see RequestProcessor::registerEvents() for details):
|
* Events triggered by the class (see description of the RequestProcessor class
|
||||||
|
* for details):
|
||||||
* - usersRequestReceived
|
* - usersRequestReceived
|
||||||
* - usersReceiveRequestError
|
* - usersReceiveRequestError
|
||||||
* - usersCallError
|
* - usersCallError
|
||||||
|
Loading…
Reference in New Issue
Block a user