ircbot/Classes/Client/AbstractClient.php

96 lines
1.9 KiB
PHP
Raw Normal View History

2010-11-21 23:48:11 +01:00
<?php
/**
* Abstract class that implements the basic api for any client.
* @author jpt
* @abstract
* @package Client
*/
abstract class Client_AbstractClient {
/**
* @var int
*/
protected $ID;
/**
* @var string
*/
protected $group;
2010-11-28 01:04:35 +01:00
/**
* @var mixed Instance of Protocol_AbstractProtocolHandler
*/
protected $protocolHandler;
2010-11-21 23:48:11 +01:00
/**
* Contains a reference to the ClientManager in order to change stuff on the fly.
* @var Client_ClientManager
*/
protected $clientManager;
2010-11-28 01:04:35 +01:00
/**
* Injects ProtocolHandler
2010-11-28 02:15:20 +01:00
* @param mixed $protocolHandler instance of Protocol_AbstractProtocolHandler
2010-11-28 01:04:35 +01:00
* @return void
*/
public function injectProtocolHandler($protocolHandler) {
$this->protocolHandler = $protocolHandler;
}
/**
* Forwards incoming data to the ProtocolParser.
* Calls protected processData()
* @param string $rawData
* @return string
2010-11-28 01:04:35 +01:00
*/
2010-11-28 02:15:20 +01:00
public function processRawData($rawData) {
2010-11-28 01:04:35 +01:00
$contentObject = $this->protocolHandler->parse($rawData);
return $this->processContentObject($contentObject);
2010-11-28 01:04:35 +01:00
}
2010-11-21 23:48:11 +01:00
/**
* This function will be the main entry point of any client.
* @param string $data
* @return string
*/
2010-11-28 01:04:35 +01:00
abstract protected function processContentObject($contentObject);
2010-11-21 23:48:11 +01:00
/**
* This function will load the given config.
* @param array $config
*/
abstract public function loadConfig($config);
/**
* Will reset the connectionStatus of the client.
* Implementation depends on the client.
* Should be used to reset internal variables.
* @return void
*/
public function resetConnectionStatus() {
}
2010-11-21 23:48:11 +01:00
/**
* @param int $id
*/
public function setID($id) {
$this->ID = $id;
}
/**
* @param string $group
*/
public function setGroup($group) {
$this->group = $group;
}
/**
* Injects ClientManager
* @param Client_ClientManager $clientManager
*/
public function injectClientManager($clientManager) {
$this->clientManager = $clientManager;
}
}
?>