|
| __construct (Server $server) |
|
| setNetwork (Network $network) |
|
| process () |
|
| closeSession ($identifier, $reason) |
|
| close (Player $player, $reason="unknown reason") |
|
| shutdown () |
|
| emergencyShutdown () |
|
| openSession ($identifier, $address, $port, $clientID) |
|
| handleEncapsulated ($identifier, EncapsulatedPacket $packet, $flags) |
|
| blockAddress ($address, $timeout=300) |
|
| unblockAddress ($address) |
|
| handleRaw ($address, $port, $payload) |
|
| sendRawPacket ($address, $port, $payload) |
|
| notifyACK ($identifier, $identifierACK) |
|
| setName ($name) |
|
| setPortCheck ($name) |
|
| handleOption ($name, $value) |
|
| putPacket (Player $player, DataPacket $packet, $needACK=false, $immediate=false) |
|
◆ __construct()
RakLibInterface constructor.
- Parameters
-
69 $this->server = $server;
70 $this->identifiers = [];
72 $this->rakLib =
new RakLibServer($this->server->getLogger(), $this->server->getLoader(), $this->server->getPort(), $this->server->getIp() ===
"" ?
"0.0.0.0" : $this->server->getIp());
73 $this->
interface = new ServerHandler($this->rakLib, $this);
◆ blockAddress()
blockAddress |
( |
|
$address, |
|
|
|
$timeout = 300 |
|
) |
| |
- Parameters
-
string | $address | |
int | $timeout | |
Implements AdvancedSourceInterface.
191 $this->interface->blockAddress($address, $timeout);
◆ close()
close |
( |
Player |
$player, |
|
|
|
$reason = "unknown reason" |
|
) |
| |
- Parameters
-
Implements SourceInterface.
126 if(isset($this->identifiers[$h = spl_object_hash($player)])){
127 unset($this->players[$this->identifiers[$h]]);
128 unset($this->identifiersACK[$this->identifiers[$h]]);
129 $this->interface->closeSession($this->identifiers[$h], $reason);
130 unset($this->identifiers[$h]);
◆ closeSession()
closeSession |
( |
|
$identifier, |
|
|
|
$reason |
|
) |
| |
- Parameters
-
string | $identifier | |
string | $reason | |
Implements ServerInstance.
112 if(isset($this->players[$identifier])){
113 $player = $this->players[$identifier];
114 unset($this->identifiers[spl_object_hash($player)]);
115 unset($this->players[$identifier]);
116 unset($this->identifiersACK[$identifier]);
117 $player->close($player->getLeaveMessage(), $reason);
◆ emergencyShutdown()
◆ handleEncapsulated()
- Parameters
-
string | $identifier | |
EncapsulatedPacket | $packet | |
int | $flags | |
Implements ServerInstance.
166 if(isset($this->players[$identifier])){
168 if($packet->buffer !==
""){
169 $pk = $this->getPacket($packet->buffer);
172 assert($pk->feof(),
"Still " . strlen(substr($pk->buffer, $pk->offset)) .
" bytes unread!");
173 $this->players[$identifier]->handleDataPacket($pk);
176 }
catch(\Throwable $e){
177 $logger = $this->server->getLogger();
179 $logger->debug(
"Exception in packet " . get_class($pk) .
" 0x" . bin2hex($packet->buffer));
◆ handleOption()
handleOption |
( |
|
$name, |
|
|
|
$value |
|
) |
| |
- Parameters
-
Implements ServerInstance.
266 if($name ===
"bandwidth"){
267 $v = unserialize($value);
268 $this->network->addStatistics($v[
"up"], $v[
"down"]);
◆ handleRaw()
handleRaw |
( |
|
$address, |
|
|
|
$port, |
|
|
|
$payload |
|
) |
| |
- Parameters
-
string | $address | |
int | $port | |
string | $payload | |
Implements ServerInstance.
207 $this->server->handlePacket($address, $port, $payload);
◆ notifyACK()
notifyACK |
( |
|
$identifier, |
|
|
|
$identifierACK |
|
) |
| |
- Parameters
-
string | $identifier | |
int | $identifierACK | |
Implements ServerInstance.
◆ openSession()
openSession |
( |
|
$identifier, |
|
|
|
$address, |
|
|
|
$port, |
|
|
|
$clientID |
|
) |
| |
- Parameters
-
string | $identifier | |
string | $address | |
int | $port | |
int | string | $clientID | |
Implements ServerInstance.
149 $ev =
new PlayerCreationEvent($this, Player::class, Player::class, null, $address, $port);
150 $this->server->getPluginManager()->callEvent($ev);
151 $class = $ev->getPlayerClass();
153 $player =
new $class($this, $ev->getClientId(), $ev->getAddress(), $ev->getPort());
154 $this->players[$identifier] = $player;
155 $this->identifiersACK[$identifier] = 0;
156 $this->identifiers[spl_object_hash($player)] = $identifier;
157 $this->server->addPlayer($identifier, $player);
◆ process()
- Returns
- bool
- Exceptions
-
Implements SourceInterface.
89 if($this->interface->handlePacket()){
92 while($this->interface->handlePacket()){
93 $diff = time() - $lasttime;
98 if(!$this->rakLib->isRunning() and !$this->rakLib->isShutdown()){
99 $this->network->unregisterInterface($this);
101 throw new \Exception(
"RakLib Thread crashed");
◆ putPacket()
putPacket |
( |
Player |
$player, |
|
|
DataPacket |
$packet, |
|
|
|
$needACK = false , |
|
|
|
$immediate = false |
|
) |
| |
- Parameters
-
Player | $player | |
DataPacket | $packet | |
bool | $needACK | |
bool | $immediate | |
- Returns
- int|null
Implements SourceInterface.
281 if(isset($this->identifiers[$h = spl_object_hash($player)])){
282 $identifier = $this->identifiers[$h];
283 if(!$packet->isEncoded){
285 $packet->isEncoded =
true;
288 if($packet instanceof BatchPacket){
290 $pk =
new EncapsulatedPacket();
291 $pk->buffer = $packet->buffer;
293 $pk->orderChannel = 0;
295 if($needACK ===
true){
296 $pk->identifierACK = $this->identifiersACK[$identifier]++;
299 if(!isset($packet->__encapsulatedPacket)){
300 $packet->__encapsulatedPacket =
new CachedEncapsulatedPacket;
301 $packet->__encapsulatedPacket->identifierACK = null;
302 $packet->__encapsulatedPacket->buffer = $packet->buffer;
304 $packet->__encapsulatedPacket->orderChannel = 0;
306 $pk = $packet->__encapsulatedPacket;
310 return $pk->identifierACK;
312 $this->server->batchPackets([$player], [$packet],
true);
◆ sendRawPacket()
sendRawPacket |
( |
|
$address, |
|
|
|
$port, |
|
|
|
$payload |
|
) |
| |
- Parameters
-
string | $address | |
int | $port | |
string | $payload | |
Implements AdvancedSourceInterface.
216 $this->interface->sendRaw($address, $port, $payload);
◆ setName()
- Parameters
-
Implements SourceInterface.
232 if($this->server->isDServerEnabled()){
233 if($this->server->dserverConfig[
"motdMaxPlayers"] > 0) $pc = $this->server->dserverConfig[
"motdMaxPlayers"];
234 elseif($this->server->dserverConfig[
"motdAllPlayers"]) $pc = $this->server->getDServerMaxPlayers();
235 else $pc = $this->server->getMaxPlayers();
237 if($this->server->dserverConfig["motdPlayers"]) $poc = $this->server->getDServerOnlinePlayers();
238 else $poc = count($this->server->getOnlinePlayers());
240 $info = $this->server->getQueryInformation();
241 $pc = $info->getMaxPlayerCount();
242 $poc = $info->getPlayerCount();
245 $this->interface->sendOption(
"name",
246 "MCPE;" . rtrim(addcslashes($name,
";"),
'\\') .
";" .
◆ setNetwork()
◆ setPortCheck()
- Parameters
-
258 $this->interface->sendOption(
"portChecking", (
bool) $name);
◆ shutdown()
◆ unblockAddress()
unblockAddress |
( |
|
$address | ) |
|
- Parameters
-
198 $this->interface->unblockAddress($address);
The documentation for this class was generated from the following file:
- src/pocketmine/network/mcpe/RakLibInterface.php