@@ -2,23 +2,25 @@ import 'dart:async';
22
33import 'package:meta/meta.dart' ;
44import 'package:simdart/src/event.dart' ;
5- import 'package:simdart/src/internal/time_action.dart' ;
65import 'package:simdart/src/internal/resource.dart' ;
6+ import 'package:simdart/src/internal/time_action.dart' ;
7+ import 'package:simdart/src/interval.dart' ;
78import 'package:simdart/src/simdart.dart' ;
89import 'package:simdart/src/simulation_track.dart' ;
910
1011@internal
11- class EventAction extends TimeAction with EventContext {
12+ class EventAction extends TimeAction implements EventContext {
1213 EventAction (
13- {required this . sim,
14+ {required SimDart sim,
1415 required super .start,
1516 required String ? eventName,
1617 required this .event,
1718 required this .resourceId,
1819 required this .onTrack,
1920 required this .onReject,
2021 required this .secondarySortByName})
21- : _eventName = eventName;
22+ : _sim = sim,
23+ _eventName = eventName;
2224
2325 /// The name of the event.
2426 final String ? _eventName;
@@ -34,8 +36,7 @@ class EventAction extends TimeAction with EventContext {
3436
3537 final Function ? onReject;
3638
37- @override
38- final SimDart sim;
39+ final SimDart _sim;
3940
4041 /// The resource id required by the event.
4142 final String ? resourceId;
@@ -64,15 +65,15 @@ class EventAction extends TimeAction with EventContext {
6465 if (resume != null ) {
6566 if (onTrack != null ) {
6667 onTrack !(SimDartHelper .buildSimulationTrack (
67- sim: sim , eventName: eventName, status: Status .resumed));
68+ sim: _sim , eventName: eventName, status: Status .resumed));
6869 }
6970 // Resume the event if it is waiting, otherwise execute its action.
7071 resume.call ();
7172 return ;
7273 }
7374
7475 Resource ? resource =
75- SimDartHelper .getResource (sim: sim , resourceId: resourceId);
76+ SimDartHelper .getResource (sim: _sim , resourceId: resourceId);
7677 if (resource != null ) {
7778 _resourceAcquired = resource.acquire (this );
7879 }
@@ -83,7 +84,7 @@ class EventAction extends TimeAction with EventContext {
8384 status = Status .rejected;
8485 }
8586 onTrack !(SimDartHelper .buildSimulationTrack (
86- sim: sim , eventName: eventName, status: status));
87+ sim: _sim , eventName: eventName, status: status));
8788 }
8889
8990 if (_canRun) {
@@ -94,12 +95,12 @@ class EventAction extends TimeAction with EventContext {
9495 _resourceAcquired = false ;
9596 }
9697 // Event released some resource, others events need retry.
97- SimDartHelper .restoreWaitingEventsForResource (sim: sim );
98+ SimDartHelper .restoreWaitingEventsForResource (sim: _sim );
9899 }
99100 });
100101 } else {
101102 onReject? .call ();
102- SimDartHelper .queueOnWaitingForResource (sim: sim , action: this );
103+ SimDartHelper .queueOnWaitingForResource (sim: _sim , action: this );
103104 }
104105 }
105106
@@ -109,9 +110,9 @@ class EventAction extends TimeAction with EventContext {
109110 return ;
110111 }
111112
112- start = sim .now + delay;
113+ start = _sim .now + delay;
113114 // Adds it back to the loop to be resumed in the future.
114- SimDartHelper .addAction (sim: sim , action: this );
115+ SimDartHelper .addAction (sim: _sim , action: this );
115116
116117 final Completer <void > resume = Completer <void >();
117118 _resume = () {
@@ -124,4 +125,42 @@ class EventAction extends TimeAction with EventContext {
124125 Future <void > _runEvent () async {
125126 return event (this );
126127 }
128+
129+ @override
130+ int get now => _sim.now;
131+
132+ @override
133+ void process (
134+ {required Event event,
135+ String ? resourceId,
136+ String ? name,
137+ int ? start,
138+ int ? delay}) {
139+ _sim.process (
140+ event: event,
141+ resourceId: resourceId,
142+ name: name,
143+ start: start,
144+ delay: delay);
145+ }
146+
147+ @override
148+ void repeatProcess (
149+ {required Event event,
150+ int ? start,
151+ int ? delay,
152+ required Interval interval,
153+ RejectedEventPolicy rejectedEventPolicy =
154+ RejectedEventPolicy .keepRepeating,
155+ String ? resourceId,
156+ String ? name}) {
157+ _sim.repeatProcess (
158+ event: event,
159+ interval: interval,
160+ start: start,
161+ delay: delay,
162+ rejectedEventPolicy: rejectedEventPolicy,
163+ resourceId: resourceId,
164+ name: name);
165+ }
127166}
0 commit comments