Added pinging to keep connection open

This commit is contained in:
Luke Fitzgerald 2010-08-07 17:25:43 -07:00
parent 067633a608
commit 7cd52847a5

View File

@ -31,6 +31,8 @@ if (!defined('STATUSNET') && !defined('LACONICA')) { exit(1); }
class IrcManager extends ImManager { class IrcManager extends ImManager {
protected $conn = null; protected $conn = null;
protected $lastPing = null;
protected $regchecks = array(); protected $regchecks = array();
protected $regchecksLookup = array(); protected $regchecksLookup = array();
@ -63,6 +65,18 @@ class IrcManager extends ImManager {
} }
} }
/**
* Idle processing for io manager's execution loop.
* Send keepalive pings to server.
*
* @return void
*/
public function idle($timeout = 0) {
if (empty($this->lastPing) || time() - $this->lastPing > 120) {
$this->send_ping();
}
}
/** /**
* Process IRC events that have come in over the wire. * Process IRC events that have come in over the wire.
* *
@ -232,4 +246,14 @@ class IrcManager extends ImManager {
return true; return true;
} }
/**
* Sends a ping
*
* @return void
*/
protected function send_ping() {
$this->lastPing = time();
$this->conn->send('PING', $this->lastPing);
}
} }