ircmanager.php almost complete - Need to add exception catching

This commit is contained in:
Luke Fitzgerald 2010-07-18 12:45:28 -07:00
parent 942ce88a75
commit 2550971450

View File

@ -31,10 +31,11 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
*/ */
class IrcManager extends ImManager { class IrcManager extends ImManager {
public $conn = null; public $conn = null;
/** /**
* Initialize connection to server. * Initialize connection to server.
*
* @return boolean true on success * @return boolean true on success
*/ */
public function start($master) { public function start($master) {
@ -46,10 +47,16 @@ class IrcManager extends ImManager {
} }
} }
/**
* Return any open sockets that the run loop should listen
* for input on.
*
* @return array Array of socket resources
*/
public function getSockets() { public function getSockets() {
$this->connect(); $this->connect();
if ($this->conn) { if ($this->conn) {
return array($this->conn->myConnection); return $this->conn->getSockets();
} else { } else {
return array(); return array();
} }
@ -57,7 +64,9 @@ class IrcManager extends ImManager {
/** /**
* Process IRC events that have come in over the wire. * Process IRC events that have come in over the wire.
*
* @param resource $socket * @param resource $socket
* @return void
*/ */
public function handleInput($socket) { public function handleInput($socket) {
common_log(LOG_DEBUG, 'Servicing the IRC queue.'); common_log(LOG_DEBUG, 'Servicing the IRC queue.');
@ -65,7 +74,12 @@ class IrcManager extends ImManager {
$this->conn->receive(); $this->conn->receive();
} }
function connect() { /**
* Initiate connection
*
* @return void
*/
public function connect() {
if (!$this->conn) { if (!$this->conn) {
$this->conn = new Phergie_Extended_Bot; $this->conn = new Phergie_Extended_Bot;
@ -78,7 +92,6 @@ class IrcManager extends ImManager {
$config = new Phergie_Config; $config = new Phergie_Config;
$config->readArray( $config->readArray(
array( array(
// One array per connection, pretty self-explanatory
'connections' => array( 'connections' => array(
array( array(
'host' => $this->plugin->host, 'host' => $this->plugin->host,
@ -119,17 +132,31 @@ class IrcManager extends ImManager {
return $this->conn; return $this->conn;
} }
function handle_irc_message($data) { /**
* Called via a callback when a message is received
*
* Passes it back to the queuing system
*
* @param array $data Data
* @return boolean
*/
public function handle_irc_message($data) {
$this->plugin->enqueue_incoming_raw($data); $this->plugin->enqueue_incoming_raw($data);
return true; return true;
} }
function send_raw_message($data) { /**
* Send a message using the daemon
*
* @param $data Message
* @return boolean true on success
*/
public function send_raw_message($data) {
$this->connect(); $this->connect();
if (!$this->conn) { if (!$this->conn) {
return false; return false;
} }
$this->conn->sflapSend($data[0],$data[1],$data[2],$data[3]); $this->conn->send($data[0], $data[1]);
return true; return true;
} }
} }