ts3phpframework
Loading...
Searching...
No Matches
MockTCP.php
Go to the documentation of this file.
1
<?php
2
3
namespace
PlanetTeamSpeak\TeamSpeak3Framework\Transport
;
4
5
use
PlanetTeamSpeak\TeamSpeak3Framework\Exception\TransportException
;
6
use
PlanetTeamSpeak\TeamSpeak3Framework\Helper\Signal
;
7
use
PlanetTeamSpeak\TeamSpeak3Framework\Helper\StringHelper
;
8
9
class
MockTCP
extends
TCP
10
{
11
public
const
S_WELCOME_L0
=
'TS3'
;
12
public
const
S_WELCOME_L1
=
'Welcome to the TeamSpeak 3 ServerQuery interface, type "help" for a list of commands and "help <command>" for information on a specific command.'
;
13
public
const
S_ERROR_OK
=
'error id=0 msg=ok'
;
14
15
public
const
CMD
= [
16
'login serveradmin secret'
=> self::S_ERROR_OK,
17
'login client_login_name=serveradmin client_login_password=secret'
=> self::S_ERROR_OK,
18
];
19
20
protected
mixed
$reply
=
null
;
21
22
public
function
connect
(): void
23
{
24
if
($this->stream !==
null
) {
25
return
;
26
}
27
28
$this->reply = sprintf(
"%s\n%s\n"
, self::S_WELCOME_L0, self::S_WELCOME_L1);
29
$this->stream =
true
;
30
}
31
32
public
function
readLine
(
string
$token =
"\n"
):
StringHelper
33
{
34
$line = StringHelper::factory(
""
);
35
$this->
connect
();
36
37
while
(!$line->endsWith($token)) {
38
// $this->waitForReadyRead();
39
40
$data = $this->
fget
();
41
Signal::getInstance()->emit(strtolower($this->
getAdapterType
()) .
"DataRead"
, $data);
42
if
(!$data) {
43
if
($line->count()) {
44
$line->append($token);
45
}
else
{
46
throw
new
TransportException
(
"connection to server '"
. $this->config[
"host"
] .
":"
. $this->config[
"port"
] .
"' lost"
);
47
}
48
}
else
{
49
$line->append($data);
50
}
51
}
52
53
return
$line->trim();
54
}
55
56
public
function
sendLine
(
string
$data,
string
$separator =
"\n"
): void
57
{
58
$this->
send
($data);
59
}
60
67
public
function
send
(
string
$data): void
68
{
69
$this->
fwrite
($data);
70
Signal::getInstance()->emit(strtolower($this->
getAdapterType
()) .
"DataSend"
, $data);
71
}
72
73
protected
function
fget
(): string
74
{
75
$this->reply = explode(
"\n"
, $this->reply);
76
$reply
= array_shift($this->reply);
77
$this->reply = join(
"\n"
, $this->reply);
78
return
$reply
.
"\n"
;
79
}
80
81
protected
function
fwrite
($data)
82
{
83
if
(!key_exists($data, self::CMD)) {
84
$this->reply =
"error id=1 msg=Unkown\n"
;
85
return
;
86
}
87
88
$this->reply = sprintf(
"%s\n%s\n"
, self::CMD[$data], self::S_ERROR_OK);
89
}
90
}
PlanetTeamSpeak\TeamSpeak3Framework\Exception\TransportException
Enhanced exception class for PlanetTeamSpeak\TeamSpeak3Framework\Transport\Transport objects.
Definition
TransportException.php:12
PlanetTeamSpeak\TeamSpeak3Framework\Helper\StringHelper
Helper class for string handling.
Definition
StringHelper.php:19
PlanetTeamSpeak\TeamSpeak3Framework\Transport\MockTCP
Definition
MockTCP.php:10
PlanetTeamSpeak\TeamSpeak3Framework\Transport\MockTCP\S_ERROR_OK
const S_ERROR_OK
Definition
MockTCP.php:13
PlanetTeamSpeak\TeamSpeak3Framework\Transport\MockTCP\S_WELCOME_L1
const S_WELCOME_L1
Definition
MockTCP.php:12
PlanetTeamSpeak\TeamSpeak3Framework\Transport\MockTCP\readLine
readLine(string $token="\n")
Definition
MockTCP.php:32
PlanetTeamSpeak\TeamSpeak3Framework\Transport\MockTCP\$reply
mixed $reply
Definition
MockTCP.php:20
PlanetTeamSpeak\TeamSpeak3Framework\Transport\MockTCP\S_WELCOME_L0
const S_WELCOME_L0
Definition
MockTCP.php:11
PlanetTeamSpeak\TeamSpeak3Framework\Transport\MockTCP\fwrite
fwrite($data)
Definition
MockTCP.php:81
PlanetTeamSpeak\TeamSpeak3Framework\Transport\MockTCP\connect
connect()
Definition
MockTCP.php:22
PlanetTeamSpeak\TeamSpeak3Framework\Transport\MockTCP\send
send(string $data)
Definition
MockTCP.php:67
PlanetTeamSpeak\TeamSpeak3Framework\Transport\MockTCP\sendLine
sendLine(string $data, string $separator="\n")
Definition
MockTCP.php:56
PlanetTeamSpeak\TeamSpeak3Framework\Transport\MockTCP\fget
fget()
Definition
MockTCP.php:73
PlanetTeamSpeak\TeamSpeak3Framework\Transport\MockTCP\CMD
const CMD
Definition
MockTCP.php:15
PlanetTeamSpeak\TeamSpeak3Framework\Transport\TCP
Class for connecting to a remote server through TCP.
Definition
TCP.php:17
PlanetTeamSpeak\TeamSpeak3Framework\Transport\Transport\getAdapterType
getAdapterType()
Definition
Transport.php:194
PlanetTeamSpeak\TeamSpeak3Framework\Helper\Signal
Definition
Handler.php:3
PlanetTeamSpeak\TeamSpeak3Framework\Transport
Definition
MockTCP.php:3
src
Transport
MockTCP.php
Generated by
1.14.0