3434import org .cloudsimplus .listeners .EventListener ;
3535import org .cloudsimplus .listeners .HostEventInfo ;
3636import org .cloudsimplus .listeners .HostUpdatesVmsProcessingEventInfo ;
37+ import org .cloudsimplus .listeners .Listeners ;
3738import org .cloudsimplus .power .PowerAware ;
3839import org .cloudsimplus .power .models .PowerModelHost ;
3940import org .cloudsimplus .provisioners .ResourceProvisioner ;
@@ -89,13 +90,13 @@ public non-sealed abstract class HostAbstract extends ExecDelayableAbstract impl
8990 protected final Set <Vm > vmsMigratingOut ;
9091
9192 /// @see #addOnUpdateProcessingListener(EventListener)
92- protected final Set <EventListener <HostUpdatesVmsProcessingEventInfo >> onUpdateProcessingListeners ;
93+ private List <EventListener <HostUpdatesVmsProcessingEventInfo >> onUpdateProcessingListeners = List . of () ;
9394
9495 /// @see #addOnStartupListener(EventListener) (EventListener)
95- protected final List <EventListener <HostEventInfo >> onStartupListeners ;
96+ private List <EventListener <HostEventInfo >> onStartupListeners = List . of () ;
9697
9798 /// @see #addOnShutdownListener(EventListener) (EventListener)
98- protected final List <EventListener <HostEventInfo >> onShutdownListeners ;
99+ private List <EventListener <HostEventInfo >> onShutdownListeners = List . of () ;
99100
100101 protected final List <Vm > vmCreatedList ;
101102
@@ -225,9 +226,6 @@ protected HostAbstract(
225226 this .stateHistory = new LinkedList <>();
226227 this .vmsMigratingIn = new HashSet <>();
227228 this .vmsMigratingOut = new HashSet <>();
228- this .onUpdateProcessingListeners = new HashSet <>();
229- this .onStartupListeners = new ArrayList <>();
230- this .onShutdownListeners = new ArrayList <>();
231229 this .resources = new ArrayList <>();
232230 this .provisioners = new ArrayList <>();
233231 this .vmCreatedList = new ArrayList <>();
@@ -296,7 +294,9 @@ protected double updateVmProcessing(final Vm vm, final double currentTime, final
296294 }
297295
298296 private void notifyOnUpdateProcessingListeners (final double nextSimulationTime ) {
299- onUpdateProcessingListeners .forEach (l -> l .update (HostUpdatesVmsProcessingEventInfo .of (l , this , nextSimulationTime )));
297+ for (final var listener : onUpdateProcessingListeners ) {
298+ listener .update (HostUpdatesVmsProcessingEventInfo .of (listener , this , nextSimulationTime ));
299+ }
300300 }
301301
302302 @ Override
@@ -550,15 +550,13 @@ private void notifyStartupOrShutdown(final boolean activate, final boolean wasAc
550550 }
551551
552552 private void updateOnShutdownListeners () {
553- for (int i = 0 ; i < onShutdownListeners .size (); i ++) {
554- final var listener = onShutdownListeners .get (i );
553+ for (final var listener : onShutdownListeners ) {
555554 listener .update (HostEventInfo .of (listener , this , simulation .clock ()));
556555 }
557556 }
558557
559558 private void updateOnStartupListeners () {
560- for (int i = 0 ; i < onStartupListeners .size (); i ++) {
561- final var listener = onStartupListeners .get (i );
559+ for (final var listener : onStartupListeners ) {
562560 listener .update (HostEventInfo .of (listener , this , simulation .clock ()));
563561 }
564562 }
@@ -620,13 +618,15 @@ public Host addOnStartupListener(@NonNull final EventListener<HostEventInfo> lis
620618 return this ;
621619 }
622620
623- onStartupListeners .add (listener );
621+ onStartupListeners = Listeners .add (onStartupListeners , listener );
624622 return this ;
625623 }
626624
627625 @ Override
628626 public boolean removeOnStartupListener (@ NonNull final EventListener <HostEventInfo > listener ) {
629- return onStartupListeners .remove (listener );
627+ final var oldList = onStartupListeners ;
628+ onStartupListeners = Listeners .remove (oldList , listener );
629+ return onStartupListeners .size () != oldList .size ();
630630 }
631631
632632 @ Override
@@ -635,18 +635,22 @@ public Host addOnShutdownListener(@NonNull final EventListener<HostEventInfo> li
635635 return this ;
636636 }
637637
638- onShutdownListeners .add (listener );
638+ onShutdownListeners = Listeners .add (onShutdownListeners , listener );
639639 return this ;
640640 }
641641
642642 @ Override
643643 public boolean removeOnShutdownListener (@ NonNull final EventListener <HostEventInfo > listener ) {
644- return onShutdownListeners .remove (listener );
644+ final var oldList = onShutdownListeners ;
645+ onShutdownListeners = Listeners .remove (oldList , listener );
646+ return onShutdownListeners .size () != oldList .size ();
645647 }
646648
647649 @ Override
648650 public boolean removeOnUpdateProcessingListener (@ NonNull final EventListener <HostUpdatesVmsProcessingEventInfo > listener ) {
649- return onUpdateProcessingListeners .remove (listener );
651+ final var oldList = onUpdateProcessingListeners ;
652+ onUpdateProcessingListeners = Listeners .remove (oldList , listener );
653+ return onUpdateProcessingListeners .size () != oldList .size ();
650654 }
651655
652656 @ Override
@@ -655,7 +659,7 @@ public Host addOnUpdateProcessingListener(@NonNull final EventListener<HostUpdat
655659 return this ;
656660 }
657661
658- this . onUpdateProcessingListeners .add (listener );
662+ onUpdateProcessingListeners = Listeners .add (onUpdateProcessingListeners , listener );
659663 return this ;
660664 }
661665
0 commit comments