Passed
Push — develop ( 065f10...1d4e29 )
by Aleksandr
01:25
created

WebSocketServer   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 9
dl 0
loc 42
rs 10
c 0
b 0
f 0
wmc 4

4 Methods

Rating   Name   Duplication   Size   Complexity  
A build() 0 5 1
A onOpen() 0 3 1
A onHandshake() 0 3 1
A __construct() 0 3 1
1
<?php
2
3
namespace AlexCool\Rcon\Server\Minecraft;
4
5
use AlexCool\Rcon\Server\AbstractServer;
6
use Swoole\WebSocket\Server;
7
8
/**
9
 * @author Aleksandr Kulina <[email protected]>
10
 *
11
 * @package AlexCool\Rcon\Server\Minecraft
12
 */
13
final class WebSocketServer extends AbstractServer
14
{
15
    /**
16
     * Events
17
     */
18
    const OPEN_EVENT = 'open';
19
    const HANDSHAKE_EVENT = 'handshake';
20
21
    /**
22
     * @param Server $server
23
     */
24
    public function __construct(Server $server)
25
    {
26
        $this->server = $server;
27
    }
28
29
    /**
30
     * @param WebSocketServerBuilder $builder
31
     *
32
     * @return WebSocketServer
33
     */
34
    public static function build(WebSocketServerBuilder $builder)
35
    {
36
        return $builder
37
            ->createWebSocketServer()
38
            ->getServer();
39
    }
40
41
    /**
42
     * @param callable $callback
43
     */
44
    public function onOpen(callable $callback)
45
    {
46
        $this->server->on(self::OPEN_EVENT, $callback);
47
    }
48
49
    /**
50
     * @param callable $callback
51
     */
52
    public function onHandshake(callable $callback)
53
    {
54
        $this->server->on(self::HANDSHAKE_EVENT, $callback);
55
    }
56
}
57