added new socket manager, errorhandling and testing is not finished yet

This commit is contained in:
kremsy
2015-06-21 20:43:18 +02:00
parent eaf8819a57
commit fc5a3e04b6
32 changed files with 2627 additions and 0 deletions

View File

@ -0,0 +1,14 @@
<?php
/**
* Created by PhpStorm.
* User: Lukas
* Date: 21.06.2015
* Time: 19:48
*/
namespace ManiaControl\Sockets;
interface SocketListener {
}

View File

@ -0,0 +1,64 @@
<?php
/**
* Created by PhpStorm.
* User: Lukas
* Date: 20.06.2015
* Time: 22:44
*/
namespace ManiaControl\Sockets;
use ManiaControl\Callbacks\Listening;
use ManiaControl\ManiaControl;
use React\EventLoop\Factory;
class SocketHandler {
/** @var ManiaControl $maniaControl */
private $maniaControl = null;
/** @var Listening[] $socketListenings */
private $socketListenings = array();
/**
* Create a new Socket Handler Instance
*
* @param ManiaControl $maniaControl
*/
public function __construct(ManiaControl $maniaControl) {
$this->maniaControl = $maniaControl;
}
public function createSocket() {
$loop = Factory::create();
$server = stream_socket_server('tcp://127.0.0.1:19999');
stream_set_blocking($server, 0);
$loop->addReadStream($server, function ($server) use ($loop) {
$conn = stream_socket_accept($server);
$data = "HTTP/1.1 200 OK\r\nContent-Length: 3\r\n\r\nHi\n";
$loop->addWriteStream($conn, function ($conn) use (&$data, $loop) {
$written = fwrite($conn, $data);
if ($written === strlen($data)) {
fclose($conn);
$loop->removeStream($conn);
} else {
$data = substr($data, 0, $written);
}
});
});
$loop->addPeriodicTimer(5, function () {
$memory = memory_get_usage() / 1024;
$formatted = number_format($memory, 3) . 'K';
echo "Current memory usage: {$formatted}\n";
});
$loop->tick();
}
public function tick() {
}
}