Completed
Push — master ( 2f8460...5c694c )
by Maik
02:22
created

ClientSocket::isConnected()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
crap 1
1
<?php
2
3
/**
4
 * This file is part of the PHP Generics package.
5
 *
6
 * @package Generics
7
 */
8
namespace Generics\Socket;
9
10
/**
11
 * This class provides a basic client socket implementation
12
 *
13
 * @author Maik Greubel <[email protected]>
14
 */
15
class ClientSocket extends Socket
16
{
17
18
    /**
19
     * Whether the socket is connected
20
     *
21
     * @var boolean
22
     */
23
    private $conntected;
24
25
    /**
26
     * Create a new client socket
27
     *
28
     * @param Endpoint $endpoint
29
     *            The endpoint to use
30
     * @param resource $clientHandle
31
     *            optional existing client handle
32
     */
33 10
    public function __construct(Endpoint $endpoint, $clientHandle = null)
34
    {
35 10
        $this->endpoint = $endpoint;
36 10
        $this->handle = $clientHandle;
37 10
        $this->conntected = false;
38
        
39 10
        if (! is_resource($clientHandle)) {
40 10
            parent::__construct($endpoint);
41
        }
42 10
    }
43
44
    /**
45
     * Connect to remote endpoint
46
     *
47
     * @throws SocketException
48
     */
49 9 View Code Duplication
    public function connect()
50
    {
51 9
        if (! @socket_connect($this->handle, $this->endpoint->getAddress(), $this->endpoint->getPort())) {
52 1
            $code = socket_last_error($this->handle);
53 1
            throw new SocketException(socket_strerror($code), array(), $code);
54
        }
55 8
        $this->conntected = true;
56 8
    }
57
58
    /**
59
     * Disconnects the socket
60
     *
61
     * @throws SocketException
62
     */
63 5
    public function disconnect()
64
    {
65 5
        if (! $this->conntected) {
66
            throw new SocketException("Socket is not connected");
67
        }
68
        
69 5
        $this->close();
70 5
    }
71
72
    /**
73
     * Whether the client is connected
74
     *
75
     * @return boolean
76
     */
77 8
    public function isConnected()
78
    {
79 8
        return $this->conntected;
80
    }
81
82
    /**
83
     *
84
     * @see \Generics\Socket\ClientSocket::disconnect()
85
     */
86 10
    public function close()
87
    {
88 10
        parent::close();
89 10
        $this->conntected = false;
90 10
    }
91
92
    /**
93
     *
94
     * {@inheritdoc}
95
     * @see \Generics\Socket\Socket::isWriteable()
96
     */
97 1
    public function isWriteable()
98
    {
99 1
        if (! $this->isConnected()) {
100 1
            return false;
101
        }
102
        
103 1
        return parent::isWriteable();
104
    }
105
}
106