2
2
3
3
namespace Enqueue \Monitoring \Symfony \DependencyInjection ;
4
4
5
+ use Enqueue \Monitoring \ClientMonitoringExtension ;
6
+ use Enqueue \Monitoring \ConsumerMonitoringExtension ;
5
7
use Enqueue \Monitoring \GenericStatsStorageFactory ;
6
8
use Enqueue \Monitoring \Resources ;
7
9
use Enqueue \Monitoring \StatsStorage ;
8
10
use Enqueue \Monitoring \StatsStorageFactory ;
9
- use Enqueue \Symfony \DependencyInjection \ FormatTransportNameTrait ;
11
+ use Enqueue \Symfony \DiUtils ;
10
12
use Symfony \Component \Config \Definition \Builder \ArrayNodeDefinition ;
11
13
use Symfony \Component \DependencyInjection \ContainerBuilder ;
12
14
use Symfony \Component \DependencyInjection \Reference ;
16
18
*/
17
19
final class MonitoringFactory
18
20
{
19
- use FormatTransportNameTrait;
20
-
21
21
/**
22
- * @var string
22
+ * @var DiUtils
23
23
*/
24
- private $ name ;
24
+ private $ diUtils ;
25
25
26
26
public function __construct (string $ name )
27
27
{
28
28
if (empty ($ name )) {
29
29
throw new \InvalidArgumentException ('The name could not be empty. ' );
30
30
}
31
31
32
- $ this ->name = $ name ;
32
+ $ this ->diUtils = DiUtils:: create ( ' monitoring ' , $ name) ;
33
33
}
34
34
35
35
public function getConfiguration (string $ name ): ArrayNodeDefinition
@@ -74,15 +74,10 @@ public function getConfiguration(string $name): ArrayNodeDefinition
74
74
return $ builder ;
75
75
}
76
76
77
- public function getName (): string
78
- {
79
- return $ this ->name ;
80
- }
81
-
82
77
public function buildStorage (ContainerBuilder $ container , array $ config ): void
83
78
{
84
- $ storageId = $ this ->format ('storage ' );
85
- $ storageFactoryId = $ this ->format ('storage.factory ' );
79
+ $ storageId = $ this ->diUtils -> format ('storage ' );
80
+ $ storageFactoryId = $ this ->diUtils -> format ('storage.factory ' );
86
81
87
82
if (isset ($ config ['storage_factory_service ' ])) {
88
83
$ container ->setAlias ($ storageFactoryId , $ config ['storage_factory_service ' ]);
@@ -99,4 +94,22 @@ public function buildStorage(ContainerBuilder $container, array $config): void
99
94
->addArgument ($ config )
100
95
;
101
96
}
97
+
98
+ public function buildClientExtension (ContainerBuilder $ container , array $ config ): void
99
+ {
100
+ $ container ->register ($ this ->diUtils ->format ('client_extension ' ), ClientMonitoringExtension::class)
101
+ ->addArgument ($ this ->diUtils ->reference ('storage ' ))
102
+ ->addArgument (new Reference ('logger ' ))
103
+ ->addTag ('enqueue.client_extension ' , ['client ' => $ this ->diUtils ->getConfigName ()])
104
+ ;
105
+ }
106
+
107
+ public function buildConsumerExtension (ContainerBuilder $ container , array $ config ): void
108
+ {
109
+ $ container ->register ($ this ->diUtils ->format ('consumer_extension ' ), ConsumerMonitoringExtension::class)
110
+ ->addArgument ($ this ->diUtils ->reference ('storage ' ))
111
+ ->addTag ('enqueue.consumption_extension ' , ['client ' => $ this ->diUtils ->getConfigName ()])
112
+ ->addTag ('enqueue.transport.consumption_extension ' , ['transport ' => $ this ->diUtils ->getConfigName ()])
113
+ ;
114
+ }
102
115
}
0 commit comments