From 6434bc25da580fa891e187332afdb23eefd47ca3 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Tue, 13 Jun 2006 13:03:58 +0000 Subject: [PATCH] corrected compilation errors introduced in the last version. git-svn-id: http://svn.berlios.de/svnroot/repos/sems/trunk@61 8eb893ce-cfd4-0310-b710-fb5ebe64c474 --- apps/voicemail/AnswerMachine.cpp | 35 ++++++++++++++++++++++++-------- apps/voicemail/AnswerMachine.h | 4 ++++ 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/apps/voicemail/AnswerMachine.cpp b/apps/voicemail/AnswerMachine.cpp index a28d34ea..45ee9de6 100644 --- a/apps/voicemail/AnswerMachine.cpp +++ b/apps/voicemail/AnswerMachine.cpp @@ -34,7 +34,6 @@ #include "AmPlugIn.h" #include "AmPlaylist.h" #include "AmSessionScheduler.h" -#include "AmSessionTimer.h" #include "sems.h" #include "log.h" @@ -62,6 +61,7 @@ string AnswerMachineFactory::AnnouncePath; string AnswerMachineFactory::DefaultAnnounce; int AnswerMachineFactory::MaxRecordTime; int AnswerMachineFactory::AcceptDelay; +AmDynInvokeFactory* AnswerMachineFactory::UserTimer=0; int AnswerMachineFactory::loadEmailTemplates(const string& path) { @@ -136,6 +136,13 @@ int AnswerMachineFactory::onLoad() AcceptDelay = DEFAULT_ACCEPT_DELAY; + UserTimer = AmPlugIn::instance()->getFactory4Di("user_timer"); + if(!UserTimer){ + + ERROR("could not load user_timer from session_timer plug-in\n"); + return -1; + } + return 0; } @@ -210,6 +217,11 @@ AnswerMachineDialog::AnswerMachineDialog(const string& email, status(0) { email_dict["email"] = email; + user_timer = AnswerMachineFactory::UserTimer->getInstance(); + if(!user_timer){ + ERROR("could not get a user timer reference\n"); + throw AmSession::Exception(500,"could not get a user timer reference"); + } } AnswerMachineDialog::~AnswerMachineDialog() @@ -229,9 +241,13 @@ void AnswerMachineDialog::process(AmEvent* event) case 0: playlist.addToPlaylist(new AmPlaylistItem(NULL,&a_msg)); - AmSessionTimer::instance()-> - setTimer(RECORD_TIMER,AnswerMachineFactory::MaxRecordTime, - getLocalTag()); + + {AmArgArray di_args,ret; + di_args.push(RECORD_TIMER); + di_args.push(AnswerMachineFactory::MaxRecordTime); + di_args.push(getLocalTag().c_str()); + + user_timer->invoke("setTimer",di_args,ret);} status = 1; break; @@ -262,11 +278,12 @@ void AnswerMachineDialog::process(AmEvent* event) return; } - AmTimeoutEvent* to = dynamic_cast(event); - if(to && to->event_id == RECORD_TIMER){ - - // clear list - playlist.close(); + AmPluginEvent* plugin_event = dynamic_cast(event); + if(plugin_event && plugin_event->name == "timer_timeout" && + plugin_event->data.get(0).asInt() == RECORD_TIMER) { + + // clear list + playlist.close(); } else AmSession::process(event); diff --git a/apps/voicemail/AnswerMachine.h b/apps/voicemail/AnswerMachine.h index 217aeff1..410eaa5a 100644 --- a/apps/voicemail/AnswerMachine.h +++ b/apps/voicemail/AnswerMachine.h @@ -55,6 +55,8 @@ public: static string DefaultAnnounce; static int MaxRecordTime; static int AcceptDelay; + static AmDynInvokeFactory* UserTimer; + AnswerMachineFactory(const string& _app_name); @@ -74,6 +76,8 @@ class AnswerMachineDialog : public AmSession const EmailTemplate* tmpl; EmailTmplDict email_dict; + AmDynInvoke* user_timer; + int status; void request2dict(const AmSipRequest& req);