66
77use Tempest \Console \ConsoleCommand ;
88use Tempest \Console \Schedule ;
9- use Tempest \Console \Scheduler \Interval ;
10- use Tempest \Console \Scheduler \ScheduledInvocation ;
119use Tempest \Console \Scheduler \SchedulerConfig ;
12- use Tempest \Container \Container ;
1310use Tempest \Core \Discovery ;
14- use Tempest \Core \HandlesDiscoveryCache ;
11+ use Tempest \Core \DiscoveryLocation ;
12+ use Tempest \Core \IsDiscovery ;
1513use Tempest \Reflection \ClassReflector ;
16- use Tempest \Reflection \MethodReflector ;
1714
1815final class ScheduleDiscovery implements Discovery
1916{
20- use HandlesDiscoveryCache ;
17+ use IsDiscovery ;
2118
2219 public function __construct (
2320 private readonly SchedulerConfig $ schedulerConfig ,
2421 ) {
2522 }
2623
27- public function discover (ClassReflector $ class ): void
24+ public function discover (DiscoveryLocation $ location , ClassReflector $ class ): void
2825 {
2926 foreach ($ class ->getPublicMethods () as $ method ) {
3027 $ schedule = $ method ->getAttribute (Schedule::class);
@@ -35,31 +32,18 @@ public function discover(ClassReflector $class): void
3532
3633 $ command = $ method ->getAttribute (ConsoleCommand::class);
3734
35+ $ this ->discoveryItems ->add ($ location , [$ method , $ command , $ schedule ]);
36+ }
37+ }
38+
39+ public function apply (): void
40+ {
41+ foreach ($ this ->discoveryItems as [$ method , $ command , $ schedule ]) {
3842 if ($ command ) {
3943 $ this ->schedulerConfig ->addCommandInvocation ($ method , $ command , $ schedule );
4044 } else {
4145 $ this ->schedulerConfig ->addMethodInvocation ($ method , $ schedule );
4246 }
4347 }
4448 }
45-
46- public function createCachePayload (): string
47- {
48- return serialize ($ this ->schedulerConfig ->scheduledInvocations );
49- }
50-
51- public function restoreCachePayload (Container $ container , string $ payload ): void
52- {
53- $ scheduledInvocations = unserialize ($ payload , [
54- 'allowed_classes ' => [
55- ScheduledInvocation::class,
56- Schedule::class,
57- Interval::class,
58- ConsoleCommand::class,
59- MethodReflector::class,
60- ],
61- ]);
62-
63- $ this ->schedulerConfig ->scheduledInvocations = $ scheduledInvocations ;
64- }
6549}
0 commit comments