/
container.php
63 lines (50 loc) · 1.85 KB
/
container.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
<?php
use Blackjack\Server\ConnectionManager;
use Blackjack\Server\Server;
use Blackjack\Server\WebSocketManager;
$container = new Pimple\Container([
'socket_server_settings' => [
'max_connections' => 500,
],
]);
$container['loop'] = function () {
$loop = \React\EventLoop\Factory::create();
return $loop;
};
$container['logger'] = function () {
return new \Blackjack\ConsoleLogger();
};
$container['table_manager'] = function ($container) {
return new \Blackjack\Server\TableManager(
$container['logger'],
new \Blackjack\Server\TableLoopFactory($container),
$container['player_factory']
);
};
$container['table_loop_factory'] = new \Blackjack\Server\TableLoopFactory($container);
$container['player_factory'] = new \Blackjack\Server\Game\PlayerFactory($container);
$container['serializer'] = new \Blackjack\Server\Message\Serializer();
$container['deserializer'] = new \Blackjack\Server\Message\Deserializer();
$container['websocket_manager'] = function ($container) {
return new WebSocketManager($container['table_manager'], $container['logger']);
};
$container['connection_manager'] = function ($container) {
return new ConnectionManager(
$container['loop'],
$container['serializer'],
$container['deserializer'],
$container['table_manager'],
$container['websocket_manager'],
$container['player_factory'],
$container['logger'],
$container['socket_server_settings']['max_connections']
);
};
$container['socket_server'] = function ($container) {
return new Server($container['loop'], $container['connection_manager'], $container['logger']);
};
$container['websocket_server'] = function ($container) {
$server = new \Ratchet\WebSocket\WsServer($container['websocket_manager']);
$server->disableVersion(0);
return $server;
};