GenisysPro  for Minecraft PE/Windows 10 v1.1.x
Feature-rich server software for Minecraft PE and Windows 10 Edition
HandlerList Class Reference

Public Member Functions

 __construct ()
 
 register (RegisteredListener $listener)
 
 registerAll (array $listeners)
 
 unregister ($object)
 
 bake ()
 
 getRegisteredListeners ($plugin=null)
 

Static Public Member Functions

static bakeAll ()
 
static unregisterAll ($object=null)
 
static getHandlerLists ()
 

Constructor & Destructor Documentation

◆ __construct()

__construct ( )

HandlerList constructor.

74  {
75  $this->handlerSlots = [
77  EventPriority::LOW => [],
79  EventPriority::HIGH => [],
82  ];
83  self::$allLists[] = $this;
84  }

Member Function Documentation

◆ bake()

bake ( )
138  {
139  if($this->handlers !== null){
140  return;
141  }
142  $entries = [];
143  foreach($this->handlerSlots as $list){
144  foreach($list as $hash => $listener){
145  $entries[$hash] = $listener;
146  }
147  }
148  $this->handlers = $entries;
149  }

◆ bakeAll()

static bakeAll ( )
static
44  {
45  foreach(self::$allLists as $h){
46  $h->bake();
47  }
48  }

◆ getHandlerLists()

static getHandlerLists ( )
static
Returns
HandlerList[]
178  {
179  return self::$allLists;
180  }

◆ getRegisteredListeners()

getRegisteredListeners (   $plugin = null)
Parameters
null | Plugin$plugin
Returns
RegisteredListener[]
156  {
157  if($plugin !== null){
158  $listeners = [];
159  foreach($this->getRegisteredListeners(null) as $hash => $listener){
160  if($listener->getPlugin() === $plugin){
161  $listeners[$hash] = $plugin;
162  }
163  }
164 
165  return $listeners;
166  }else{
167  while(($handlers = $this->handlers) === null){
168  $this->bake();
169  }
170 
171  return $handlers;
172  }
173  }

◆ register()

register ( RegisteredListener  $listener)
Parameters
RegisteredListener$listener
Exceptions
91  {
92  if($listener->getPriority() < EventPriority::MONITOR or $listener->getPriority() > EventPriority::LOWEST){
93  return;
94  }
95  if(isset($this->handlerSlots[$listener->getPriority()][spl_object_hash($listener)])){
96  throw new \InvalidStateException("This listener is already registered to priority " . $listener->getPriority());
97  }
98  $this->handlers = null;
99  $this->handlerSlots[$listener->getPriority()][spl_object_hash($listener)] = $listener;
100  }

◆ registerAll()

registerAll ( array  $listeners)
Parameters
RegisteredListener[]$listeners
105  {
106  foreach($listeners as $listener){
107  $this->register($listener);
108  }
109  }

◆ unregister()

unregister (   $object)
Parameters
RegisteredListener | Listener | Plugin$object
114  {
115  if($object instanceof Plugin or $object instanceof Listener){
116  $changed = false;
117  foreach($this->handlerSlots as $priority => $list){
118  foreach($list as $hash => $listener){
119  if(($object instanceof Plugin and $listener->getPlugin() === $object)
120  or ($object instanceof Listener and $listener->getListener() === $object)
121  ){
122  unset($this->handlerSlots[$priority][$hash]);
123  $changed = true;
124  }
125  }
126  }
127  if($changed === true){
128  $this->handlers = null;
129  }
130  }elseif($object instanceof RegisteredListener){
131  if(isset($this->handlerSlots[$object->getPriority()][spl_object_hash($object)])){
132  unset($this->handlerSlots[$object->getPriority()][spl_object_hash($object)]);
133  $this->handlers = null;
134  }
135  }
136  }

◆ unregisterAll()

static unregisterAll (   $object = null)
static

Unregisters all the listeners If a Plugin or Listener is passed, all the listeners with that object will be removed

Parameters
Plugin | Listener | null$object
56  {
57  if($object instanceof Listener or $object instanceof Plugin){
58  foreach(self::$allLists as $h){
59  $h->unregister($object);
60  }
61  }else{
62  foreach(self::$allLists as $h){
63  foreach($h->handlerSlots as $key => $list){
64  $h->handlerSlots[$key] = [];
65  }
66  $h->handlers = null;
67  }
68  }
69  }

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