[TASK] Continued to work on the Buffer thingy. Code still broken.

This commit is contained in:
Jan Philipp Timme 2010-12-02 22:34:12 +00:00
parent c382cfe756
commit 2b8263a49d
2 changed files with 48 additions and 7 deletions

View File

@ -42,14 +42,18 @@ abstract class Client_AbstractClient {
} }
/** /**
* Forwards incoming data to the ProtocolParser. * Forwards incoming data to the ProtocolHandler
* Calls protected processData() * Let's the ProtocolHandler do all the work and forward its results to the Clients.
* Return resulting raw data.
* @param string $rawData * @param string $rawData
* @return string * @return string
*/ */
public function processRawData($rawData) { public function processRawData($rawData) {
$contentObject = $this->protocolHandler->pushRawData($rawData); $this->protocolHandler->pushRawData($rawData);
return $this->processContentObject($this->protocolHandler->); while($this->protocolHandler->canWork()) {
$this->processContentObject($this->protocolHandler->work());
}
return $this->protocolHandler->getRawData();
} }
/** /**

View File

@ -1,6 +1,8 @@
<?php <?php
/** /**
* Abstract ProtocolHandler with the basic api. * Abstract ProtocolHandler with the basic api.
* The ProtocolHandler contains two buffers for incoming and outgoing data.
* It will store the data and provide functions to add incoming and get outgoing data.
* @author jpt * @author jpt
* @abstract * @abstract
* @package Protocol * @package Protocol
@ -10,11 +12,46 @@
abstract class Protocol_AbstractProtocolHandler { abstract class Protocol_AbstractProtocolHandler {
/** /**
* Parses incoming data, returns a ProtocolObject * Buffer for data that was received by the Client.
* @param string $data * @var Misc_Buffer
*/
protected $buffer_incoming;
/**
* Buffer for data that will be sent by the Client.
* @var Misc_Buffer
*/
protected $buffer_outgoing;
/**
* Returns whether work() can be called or not.
* Depends on the protocol and its implementation.
* @return boolean
*/
abstract public function canWork();
/**
* Main worker function of the ProtocolHandler.
* Will fetch data from the buffer_incoming, process it,
* and create a ProtocolContentObject out of it that will be returned to the client.
* @return mixed instance of Protocol_AbstractProtocolContentObject * @return mixed instance of Protocol_AbstractProtocolContentObject
*/ */
abstract public function parse($data); abstract public function work();
/**
* Adds the incoming data to the internal buffer.
* @param string $rawData
*/
public function pushRawData($rawData) {
$this->buffer_incoming->addData($rawData);
}
/**
* Returns all outgoing data of the internal buffer.
* @return string
*/
public function getRawData() {
return $this->buffer_outgoing->getAllBufferContents();
}
} }
?> ?>