[TASK] Added an outputBuffer to the AbstractClientDispatcher.
[TASK] Added support for the new outputBuffer - it can be used in addition to the default behaviour "return a string on processRawData()".
This commit is contained in:
parent
e702124895
commit
d0de3823a9
|
@ -1,31 +1,31 @@
|
|||
<?php
|
||||
namespace JPT\IrcClient;
|
||||
|
||||
/**
|
||||
* IrcClient class that contains all the Plugins
|
||||
* BotClient class that handles the controls or whatever...edit this later...
|
||||
*
|
||||
* @author jpt
|
||||
* @package Client
|
||||
* @depends Client_AbstractClient
|
||||
* @depends \JPT\SocketFramework\Client\AbstractClientDispatcher
|
||||
*/
|
||||
class Client_BotClient extends Client_AbstractClient {
|
||||
class BotClientDispatcher extends \JPT\SocketFramework\Client\AbstractClientDispatcher {
|
||||
|
||||
/**
|
||||
* Default constructor.
|
||||
* @return void
|
||||
* Forwards incoming data to the ProtocolHandler
|
||||
* Let's the ProtocolHandler do all the work and forward its results to the Clients.
|
||||
* Return resulting raw data.
|
||||
*
|
||||
* @param string $rawData
|
||||
* @return string
|
||||
*/
|
||||
public function __construct() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Does all the hard work.
|
||||
* @param object $contentObject
|
||||
* @return void
|
||||
*/
|
||||
public function processContentObject($contentObject) {
|
||||
public function processRawData($rawData) {
|
||||
$return = "";
|
||||
$rawData = $contentObject->getRawData();
|
||||
|
||||
if(trim($rawData) === "list") {
|
||||
$return = print_r(array("IDs" => $this->clientManager->getIDs(), "Groups" => $this->clientManager->getGroups()), TRUE);
|
||||
$return = print_r(array(
|
||||
"IDs" => $this->clientManager->getIDs(),
|
||||
"Groups" => $this->clientManager->getGroups()
|
||||
), TRUE);
|
||||
}
|
||||
|
||||
if(strpos($rawData, "-") !== FALSE ) {
|
||||
|
@ -42,7 +42,7 @@ class Client_BotClient extends Client_AbstractClient {
|
|||
|
||||
//TODO: implement this correctly
|
||||
$return = str_replace("\n", "\r\n", $return);
|
||||
$this->protocolHandler->sendRaw($return);
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
|
@ -2,12 +2,13 @@
|
|||
namespace JPT\IrcClient;
|
||||
|
||||
/**
|
||||
* The ClientDispatcher for this IrcBot.
|
||||
* The IrcClientDispatcher for this IrcBot.
|
||||
*
|
||||
* @author jpt
|
||||
* @package Client
|
||||
* @depends \JPT\SocketFramework\Client\AbstractClientDispatcher
|
||||
*/
|
||||
class ClientDispatcher extends \JPT\SocketFramework\Client\AbstractClientDispatcher {
|
||||
class IrcClientDispatcher extends \JPT\SocketFramework\Client\AbstractClientDispatcher {
|
||||
|
||||
/**
|
||||
* @var boolean
|
||||
|
@ -44,6 +45,7 @@ class ClientDispatcher extends \JPT\SocketFramework\Client\AbstractClientDispatc
|
|||
* @return void
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->outputBuffer = new \JPT\SocketFramework\Misc\Buffer("\r\n");
|
||||
$this->nick = "Serena";
|
||||
$this->channels = array();
|
||||
$this->resetConnectionStatus();
|
||||
|
@ -70,7 +72,7 @@ class ClientDispatcher extends \JPT\SocketFramework\Client\AbstractClientDispatc
|
|||
$data = "USER poweruser as as :JPTs Bot\r\nNICK " . $this->nick . "\r\n";
|
||||
$this->authed = TRUE;
|
||||
}
|
||||
//$this->protocolHandler->sendRaw($data);
|
||||
$this->send($data);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -106,7 +108,7 @@ class ClientDispatcher extends \JPT\SocketFramework\Client\AbstractClientDispatc
|
|||
$return .= "QUIT :lol\r\n";
|
||||
}
|
||||
|
||||
return $return;
|
||||
$this->send($return);
|
||||
}
|
||||
|
||||
/**
|
|
@ -21,6 +21,13 @@ abstract class AbstractClientDispatcher implements \JPT\SocketFramework\Client\C
|
|||
* @var string
|
||||
*/
|
||||
protected $group;
|
||||
|
||||
/**
|
||||
* Contains data that the ClientDispatcher sends.
|
||||
*
|
||||
* @var \JPT\SocketFramework\Misc\Buffer
|
||||
*/
|
||||
protected $outputBuffer;
|
||||
|
||||
/**
|
||||
* Contains a reference to the ClientManager in order to change stuff on the fly.
|
||||
|
@ -29,6 +36,35 @@ abstract class AbstractClientDispatcher implements \JPT\SocketFramework\Client\C
|
|||
*/
|
||||
protected $clientManager;
|
||||
|
||||
|
||||
/**
|
||||
* Default constructor.
|
||||
* Creates the outputBuffer.
|
||||
*/
|
||||
public function __construct() {
|
||||
$this->outputBuffer = new \JPT\SocketFramework\Misc\Buffer();
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds data that shall be sent to the outputBuffer.
|
||||
* Feel free to overwrite this if you need something different.
|
||||
*
|
||||
* @param string $rawData
|
||||
*/
|
||||
protected function send($rawData) {
|
||||
$this->outputBuffer->addData($rawData);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all data from the outputBuffer.
|
||||
* Feel free to overwrite this if you need something different.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function getOutputData() {
|
||||
return $this->outputBuffer->getAllBufferContents();
|
||||
}
|
||||
|
||||
/**
|
||||
* Forwards incoming data to the ProtocolHandler
|
||||
* Let's the ProtocolHandler do all the work and forward its results to the Clients.
|
||||
|
|
|
@ -131,7 +131,12 @@ class ClientManager {
|
|||
unset($data);
|
||||
|
||||
//call the registered client
|
||||
if(isset($this->clientDispatcherPool[$connectionHandler->getID()])) $outgoingData .= $this->clientDispatcherPool[$connectionHandler->getID()]->processRawData($incomingData);
|
||||
if(isset($this->clientDispatcherPool[$connectionHandler->getID()])) {
|
||||
//other output data has priority.
|
||||
$outgoingData .= $this->clientDispatcherPool[$connectionHandler->getID()]->getOutputData();
|
||||
//returned data from the processing will be sent.
|
||||
$outgoingData .= $this->clientDispatcherPool[$connectionHandler->getID()]->processRawData($incomingData);
|
||||
}
|
||||
|
||||
//i don't know what to do here... maybe call a connection bridge?
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
<?php
|
||||
$clientManager = new \JPT\SocketFramework\Client\ClientManager();
|
||||
$clientManager->registerClientDispatcherByProtocol("irc", "\JPT\IrcClient\ClientDispatcher");
|
||||
$clientManager->registerClientDispatcherByProtocol("irc", "\JPT\IrcClient\IrcClientDispatcher");
|
||||
$clientManager->registerClientDispatcherByProtocol("jpt_control", "\JPT\IrcClient\BotClientDispatcher");
|
||||
|
||||
$freenode = $clientManager->createTcpConnection("freenode", "irc");
|
||||
$clientManager->attachConfig(array(
|
||||
|
@ -45,7 +46,7 @@ $eloxoph->connect("irc.eloxoph.com", 6667);*/
|
|||
|
||||
|
||||
|
||||
$srv = $clientManager->createTcpConnection("srv", "RAW");
|
||||
$srv = $clientManager->createTcpConnection("srv", "jpt_control");
|
||||
$srv->bind("localhost", 7777);
|
||||
$srv->listen();
|
||||
|
||||
|
|
Loading…
Reference in New Issue