From e7b2f877bd4cde7160d6db1ab2f378f733965fd4 Mon Sep 17 00:00:00 2001 From: brettlangdon Date: Mon, 30 Dec 2013 18:52:26 -0500 Subject: [PATCH] move namespace frm brettlangdon/drudge to just drudge --- composer.json | 4 +- src/Brettlangdon/Drudge/Server.php | 38 ---------------- src/Drudge/Server.php | 72 ++++++++++++++++++++++++++++++ 3 files changed, 74 insertions(+), 40 deletions(-) delete mode 100644 src/Brettlangdon/Drudge/Server.php create mode 100644 src/Drudge/Server.php diff --git a/composer.json b/composer.json index 52c0091..da8b269 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "brettlangdon/drudge", + "name": "drudge/drudge", "description": "A simple PHP web server", "version": "0.1.0", "license": "MIT", @@ -29,7 +29,7 @@ ], "autoload": { "psr-0": { - "Brettlangdon\\Drudge\\": "src/" + "Drudge\\": "src/" } } } diff --git a/src/Brettlangdon/Drudge/Server.php b/src/Brettlangdon/Drudge/Server.php deleted file mode 100644 index 09b7972..0000000 --- a/src/Brettlangdon/Drudge/Server.php +++ /dev/null @@ -1,38 +0,0 @@ -host = $params['host']; - } - - if(array_key_exists('port', $params)){ - $this->port = intval($params['port']); - } - - $this->handler = $handler; - } - - public function run(){ - - } - - public function __destruct(){ - - } -} \ No newline at end of file diff --git a/src/Drudge/Server.php b/src/Drudge/Server.php new file mode 100644 index 0000000..b6ccb14 --- /dev/null +++ b/src/Drudge/Server.php @@ -0,0 +1,72 @@ +host = $params['host']; + } + + if(array_key_exists('port', $params)){ + $this->port = intval($params['port']); + } + + $this->handler = $handler; + } + + public function run(){ + $this->server = uv_tcp_init(); + + uv_tcp_bind($this->server, uv_ip4_addr($this->host, $this->port)); + uv_listen($this->server, 100, array($this, '_listen')); + uv_run(uv_default_loop()); + } + + private function _listen($stream){ + $client = uv_tcp_init(); + uv_accept($stream, $client); + + $this->clients[(int)$client] = $client; + + uv_read_start($client, array($this, '_read')); + } + + private function _read($client, $nread, $buffer){ + if($nread < 0){ + uv_shutdown($client, array($this, '_close')); + } else if($nread == 0){ + if(uv_last_error() == UV::EOF){ + uv_shutdown($client, array($this, '_close')); + } + } else{ + $request = new \Drudge\HTTPRequest($buffer); + $response = new \Drudge\HTTPResponse(); + + $handler = $this->handler; + $data = $handler($request, $response); + + uv_write($client, "{$response}\r\n{$data}", array($this, '_close')); + } + } + + private function _close($client){ + uv_close($client, function($client){ + unset($this->clients[(int)$client]); + }); + } +} \ No newline at end of file