GenisysPro  for Minecraft PE/Windows 10 v1.1.x
Feature-rich server software for Minecraft PE and Windows 10 Edition
SendUsageTask Class Reference

Public Member Functions

 __construct (Server $server, $type, $playerList=[])
 
 onRun ()
 
- Public Member Functions inherited from AsyncTask
 isGarbage ()
 
 setGarbage ()
 
 isFinished ()
 
 run ()
 
 isCrashed ()
 
 getResult ()
 
 cancelRun ()
 
 hasCancelledRun ()
 
 hasResult ()
 
 setResult ($result, $serialize=true)
 
 setTaskId ($taskId)
 
 getTaskId ()
 
 getFromThreadStore ($identifier)
 
 saveToThreadStore ($identifier, $value)
 
 onRun ()
 
 onCompletion (Server $server)
 
 cleanObject ()
 
- Public Member Functions inherited from Threaded
 chunk ($size, bool $preserve=false)
 
 count ()
 
 isRunning ()
 
 isTerminated ()
 
 merge ($from, $overwrite=true)
 
 notify ()
 
 notifyOne ()
 
 offsetGet ($offset)
 
 offsetSet ($offset, $value)
 
 offsetExists ($offset)
 
 offsetUnset ($offset)
 
 pop ()
 
 run ()
 
 shift ()
 
 synchronized (\Closure $function, $args=null)
 
 wait ($timeout)
 
 getRefCount ()
 
 addRef ()
 
 delRef ()
 
 isGarbage ()
 

Data Fields

const TYPE_OPEN = 1
 
const TYPE_STATUS = 2
 
const TYPE_CLOSE = 3
 
 $endpoint
 
 $data
 
- Data Fields inherited from AsyncTask
 $worker = null
 

Additional Inherited Members

- Static Public Member Functions inherited from Threaded
static extend ($obj)
 

Constructor & Destructor Documentation

◆ __construct()

__construct ( Server  $server,
  $type,
  $playerList = [] 
)

SendUsageTask constructor.

Parameters
Server$server
$type
array$playerList
46  {
47  $endpoint = "http://" . $server->getProperty("anonymous-statistics.host", "stats.pocketmine.net") . "/";
48 
49  $data = [];
50  $data["uniqueServerId"] = $server->getServerUniqueId();
51  $data["uniqueMachineId"] = Utils::getMachineUniqueId();
52  $data["uniqueRequestId"] = UUID::fromData($server->getServerUniqueId(), microtime(true));
53 
54  switch($type){
55  case self::TYPE_OPEN:
56  $data["event"] = "open";
57 
58  $version = new VersionString();
59 
60  $data["server"] = [
61  "port" => $server->getPort(),
62  "software" => $server->getName(),
63  "fullVersion" => $version->get(true),
64  "version" => $version->get(),
65  "build" => $version->getBuild(),
66  "api" => $server->getApiVersion(),
67  "minecraftVersion" => $server->getVersion(),
68  "protocol" => ProtocolInfo::CURRENT_PROTOCOL
69  ];
70 
71  $data["system"] = [
72  "operatingSystem" => Utils::getOS(),
73  "cores" => Utils::getCoreCount(),
74  "phpVersion" => PHP_VERSION,
75  "machine" => php_uname("a"),
76  "release" => php_uname("r"),
77  "platform" => php_uname("i")
78  ];
79 
80  $data["players"] = [
81  "count" => 0,
82  "limit" => $server->getMaxPlayers()
83  ];
84 
85  $plugins = [];
86 
87  foreach($server->getPluginManager()->getPlugins() as $p){
88  $d = $p->getDescription();
89 
90  $plugins[$d->getName()] = [
91  "name" => $d->getName(),
92  "version" => $d->getVersion(),
93  "enabled" => $p->isEnabled()
94  ];
95  }
96 
97  $data["plugins"] = $plugins;
98 
99  break;
100  case self::TYPE_STATUS:
101  $data["event"] = "status";
102 
103  $data["server"] = [
104  "ticksPerSecond" => $server->getTicksPerSecondAverage(),
105  "tickUsage" => $server->getTickUsageAverage(),
106  "ticks" => $server->getTick()
107  ];
108 
109 
110  //This anonymizes the user ids so they cannot be reversed to the original
111  foreach($playerList as $k => $v){
112  $playerList[$k] = md5($v);
113  }
114 
115  $players = [];
116  foreach($server->getOnlinePlayers() as $p){
117  if($p->isOnline()){
118  $players[] = md5($p->getUniqueId()->toBinary());
119  }
120  }
121 
122  $data["players"] = [
123  "count" => count($players),
124  "limit" => $server->getMaxPlayers(),
125  "currentList" => $players,
126  "historyList" => array_values($playerList)
127  ];
128 
129  $info = Utils::getMemoryUsage(true);
130  $data["system"] = [
131  "mainMemory" => $info[0],
132  "totalMemory" => $info[1],
133  "availableMemory" => $info[2],
134  "threadCount" => Utils::getThreadCount()
135  ];
136 
137  break;
138  case self::TYPE_CLOSE:
139  $data["event"] = "close";
140  $data["crashing"] = $server->isRunning();
141  break;
142  }
143 
144  $this->endpoint = $endpoint . "api/post";
145  $this->data = json_encode($data/*, JSON_PRETTY_PRINT*/);
146  }

Member Function Documentation

◆ onRun()

onRun ( )
148  {
149  try{
150  Utils::postURL($this->endpoint, $this->data, 5, [
151  "Content-Type: application/json",
152  "Content-Length: " . strlen($this->data)
153  ]);
154  }catch(\Throwable $e){
155 
156  }
157  }

Field Documentation

◆ $data

$data

◆ $endpoint

$endpoint

◆ TYPE_CLOSE

const TYPE_CLOSE = 3

◆ TYPE_OPEN

const TYPE_OPEN = 1

◆ TYPE_STATUS

const TYPE_STATUS = 2

The documentation for this class was generated from the following file: