Requeue waiting messages on start/connection loss

This commit is contained in:
Luke Fitzgerald 2010-08-09 07:03:54 -07:00
parent 841da54301
commit d321b6e76f

View File

@ -42,6 +42,7 @@ class MsnManager extends ImManager {
*/ */
public function start($master) { public function start($master) {
if (parent::start($master)) { if (parent::start($master)) {
$this->requeue_waiting_messages();
$this->connect(); $this->connect();
return true; return true;
} else { } else {
@ -185,6 +186,21 @@ class MsnManager extends ImManager {
} }
} }
/**
* Requeue messages from the waiting table so we try
* to send them again
*
* @return void
*/
protected function requeue_waiting_messages() {
$wm = Msn_waiting_message::top($data['to']);
while ($wm != NULL) {
$this->plugin->send_message($wm->screenname, $wm->message);
$wm->delete();
$wm = Msn_waiting_message::top($data['to']);
}
}
/** /**
* Called by callback to log failure during connect * Called by callback to log failure during connect
* *
@ -203,6 +219,8 @@ class MsnManager extends ImManager {
*/ */
public function handle_reconnect($data) { public function handle_reconnect($data) {
common_log(LOG_NOTICE, 'MSN reconnecting'); common_log(LOG_NOTICE, 'MSN reconnecting');
// Requeue messages waiting in the DB
$this->requeue_waiting_messages();
} }
/** /**