[TASK] Started to move buffers into ProtocolHandler.

[TODO] Move buffers, finish the linebreak stuff.
This commit is contained in:
Jan Philipp Timme 2010-11-28 18:35:08 +00:00
parent db9dda856c
commit 5cb0714834
4 changed files with 22 additions and 6 deletions

View File

@ -41,11 +41,10 @@ class Client_ClientManager {
/**
* Default constructor.
* @param string $linebreak
* @return void
*/
function __construct($linebreak = "\r\n") {
$this->connectionPool = new Connection_ConnectionPool($linebreak);
function __construct() {
$this->connectionPool = new Connection_ConnectionPool();
$this->clientPool = array();
$this->registeredProtocols = array();
$this->routingRules = array();

View File

@ -28,9 +28,9 @@ class Connection_ConnectionPool {
* Creates an Instance of SocketPool
* @return void
*/
function __construct($linebreak = "\r\n") {
function __construct() {
$this->connectionHandlers = array();
$this->socketPool = new Socket_SocketPool($linebreak);
$this->socketPool = new Socket_SocketPool();
$this->nextID = 1;
}

View File

@ -3,6 +3,7 @@
* Buffer class for a string.
* Will fix issues with sockets that don't care about linebreaks.
* Can also be used for all kinds of purpose.
* TODO: implement a method to return the next X bytes (return false if not enough bytes there,yet)
* @author jpt
* @package Misc
*/
@ -25,7 +26,7 @@ class Misc_Buffer {
* @param $linebreak
* @return void
*/
function __construct($linebreak = "\r\n") {
function __construct($linebreak = "") {
$this->buffer = "";
$this->linebreak = $linebreak;
}
@ -35,6 +36,8 @@ class Misc_Buffer {
* @return void
*/
protected function pruneEmptyLines() {
//no need to do this when there are no linebreaks.
if($this->linebreak === "") return;
if(strpos($this->buffer, $this->linebreak) === FALSE) return;
$has_linebreak_at_end = (substr($this->buffer, (-1) * strlen($this->linebreak)) === $this->linebreak) ? TRUE : FALSE;
$lines = explode($this->linebreak, $this->buffer);
@ -60,8 +63,10 @@ class Misc_Buffer {
/**
* Returns the next line in the buffer and removes it from the buffer.
* @return string
* @throws Exception_GeneralException
*/
public function getNextLine() {
if($this->linebreak === "") throw new Exception_GeneralException("Cannot return a line - no linebreak is set!", 1290964174);
if(!$this->hasLines()) return "";
list($line) = explode($this->linebreak, $this->buffer);
$this->buffer = str_replace($line.$this->linebreak, "", $this->buffer);
@ -70,11 +75,22 @@ class Misc_Buffer {
return $result;
}
/**
* Returns the next $length chars from the buffer.
* @return string Returns "" if no
*/
public function getNextChars($length) {
//TODO: substr und so
return "";
}
/**
* Checks whether the buffer contains more lines to process.
* @return boolean
* @throws Exception_GeneralException
*/
public function hasLines() {
if($this->linebreak === "") throw new Exception_GeneralException("Cannot tell whether the buffer has lines - no linebreak set!", 1290964243);
return (trim(strstr($this->buffer, $this->linebreak, TRUE)) !== "") ? TRUE : FALSE;
}

View File

@ -5,6 +5,7 @@
* @abstract
* @package Protocol
* TODO: finish this shit
* TODO: Move the buffers here, they will be more useful.
*/
abstract class Protocol_AbstractProtocolHandler {