Author: sayer
Date: 2008-09-23 17:06:22 +0200 (Tue, 23 Sep 2008)
New Revision: 1086
Added:
trunk/core/AmSessionEventHandler.cpp
trunk/core/AmSessionEventHandler.h
Modified:
trunk/core/AmSession.cpp
trunk/core/AmSession.h
Log:
moved AmSessionEventHandler into its own file, so that AmSession methods are
easier to find. make session event handlers callable by AmSession descendants
(thanks Rui Jin Zheng)
Modified: trunk/core/AmSession.cpp
===================================================================
--- trunk/core/AmSession.cpp 2008-09-23 14:38:46 UTC (rev 1085)
+++ trunk/core/AmSession.cpp 2008-09-23 15:06:22 UTC (rev 1086)
@@ -52,79 +52,9 @@
volatile unsigned int AmSession::session_num = 0;
-// AmSessionEventHandler methods
-bool AmSessionEventHandler::process(AmEvent*)
-{
- return false;
-}
-
-bool AmSessionEventHandler::onSipEvent(AmSipEvent*)
-{
- return false;
-}
-
-bool AmSessionEventHandler::onSipRequest(const AmSipRequest&)
-{
- return false;
-}
-
-bool AmSessionEventHandler::onSipReply(const AmSipReply& reply)
-{
- return false;
-}
-
-bool AmSessionEventHandler::onSendRequest(const string& method,
- const string& content_type,
- const string& body,
- string& hdrs,
- int flags,
- unsigned int cseq)
-{
- return false;
-}
-
-bool AmSessionEventHandler::onSendReply(const AmSipRequest& req,
- unsigned int code,
- const string& reason,
- const string& content_type,
- const string& body,
- string& hdrs,
- int flags)
-{
- return false;
-}
-
-
// AmSession methods
-#if __GNUC__ < 3
-#define CALL_EVENT_H(method,args...) \
- do{\
- vector<AmSessionEventHandler*>::iterator evh =
ev_handlers.begin(); \
- bool stop = false; \
- while((evh != ev_handlers.end()) && !stop){ \
- stop = (*evh)->method( ##args ); \
- evh++; \
- } \
- if(stop) \
- return; \
- }while(0)
-#else
-#define CALL_EVENT_H(method,...) \
- do{\
- vector<AmSessionEventHandler*>::iterator evh =
ev_handlers.begin(); \
- bool stop = false; \
- while((evh != ev_handlers.end()) && !stop){ \
- stop = (*evh)->method( __VA_ARGS__ ); \
- evh++; \
- } \
- if(stop) \
- return; \
- }while(0)
-#endif
-
-
AmSession::AmSession()
: AmEventQueue(this), // AmDialogState(),
dlg(this),
Modified: trunk/core/AmSession.h
===================================================================
--- trunk/core/AmSession.h 2008-09-23 14:38:46 UTC (rev 1085)
+++ trunk/core/AmSession.h 2008-09-23 15:06:22 UTC (rev 1086)
@@ -37,6 +37,7 @@
#include "AmSipDialog.h"
#include "AmSipEvent.h"
#include "AmApi.h"
+#include "AmSessionEventHandler.h"
#ifdef WITH_ZRTP
#include "zrtp/zrtp.h"
@@ -57,49 +58,6 @@
/* definition imported from Ser parser/msg_parser.h */
#define FL_FORCE_ACTIVE 2
-/**
- * \brief Interface for SIP signaling plugins that
- * must change requests or replies (ex: session timer).
- *
- * Signaling plugins must inherite from this class.
- */
-class AmSessionEventHandler
- : public ArgObject
-{
-public:
- bool destroy;
-
- AmSessionEventHandler()
- : destroy(true) {}
-
- virtual ~AmSessionEventHandler() {}
- /*
- * All the methods return true if the event processing
- * shall be stopped after them.
- */
- virtual bool process(AmEvent*);
- virtual bool onSipEvent(AmSipEvent*);
- virtual bool onSipRequest(const AmSipRequest&);
- virtual bool onSipReply(const AmSipReply&);
-
- virtual bool onSendRequest(const string& method,
- const string& content_type,
- const string& body,
- string& hdrs,
- int flags,
- unsigned int cseq);
-
- virtual bool onSendReply(const AmSipRequest& req,
- unsigned int code,
- const string& reason,
- const string& content_type,
- const string& body,
- string& hdrs,
- int flags);
-};
-
-
-
#define AM_AUDIO_IN 0
#define AM_AUDIO_OUT 1
@@ -132,8 +90,6 @@
AmDtmfEventQueue m_dtmfEventQueue;
bool m_dtmfDetectionEnabled;
- vector<AmSessionEventHandler*> ev_handlers;
-
/** @see AmThread::run() */
void run();
@@ -160,6 +116,8 @@
/** do accept early session? */
bool accept_early_session;
+ vector<AmSessionEventHandler*> ev_handlers;
+
public:
AmRtpAudio rtp_str;
Added: trunk/core/AmSessionEventHandler.cpp
===================================================================
--- trunk/core/AmSessionEventHandler.cpp 2008-09-23 14:38:46 UTC (rev
1085)
+++ trunk/core/AmSessionEventHandler.cpp 2008-09-23 15:06:22 UTC (rev
1086)
@@ -0,0 +1,70 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2002-2003 Fhg Fokus
+ *
+ * This file is part of sems, a free SIP media server.
+ *
+ * sems is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version
+ *
+ * For a license to use the ser software under conditions
+ * other than those described here, or to purchase support for this
+ * software, please contact iptel.org by e-mail at the following addresses:
+ * [EMAIL PROTECTED]
+ *
+ * sems is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "AmSessionEventHandler.h"
+
+// AmSessionEventHandler methods
+bool AmSessionEventHandler::process(AmEvent*)
+{
+ return false;
+}
+
+bool AmSessionEventHandler::onSipEvent(AmSipEvent*)
+{
+ return false;
+}
+
+bool AmSessionEventHandler::onSipRequest(const AmSipRequest&)
+{
+ return false;
+}
+
+bool AmSessionEventHandler::onSipReply(const AmSipReply& reply)
+{
+ return false;
+}
+
+bool AmSessionEventHandler::onSendRequest(const string& method,
+ const string& content_type,
+ const string& body,
+ string& hdrs,
+ int flags,
+ unsigned int cseq)
+{
+ return false;
+}
+
+bool AmSessionEventHandler::onSendReply(const AmSipRequest& req,
+ unsigned int code,
+ const string& reason,
+ const string& content_type,
+ const string& body,
+ string& hdrs,
+ int flags)
+{
+ return false;
+}
Property changes on: trunk/core/AmSessionEventHandler.cpp
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Added: trunk/core/AmSessionEventHandler.h
===================================================================
--- trunk/core/AmSessionEventHandler.h 2008-09-23 14:38:46 UTC (rev 1085)
+++ trunk/core/AmSessionEventHandler.h 2008-09-23 15:06:22 UTC (rev 1086)
@@ -0,0 +1,107 @@
+/*
+ * $Id$
+ *
+ * Copyright (C) 2002-2003 Fhg Fokus
+ *
+ * This file is part of sems, a free SIP media server.
+ *
+ * sems is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version
+ *
+ * For a license to use the ser software under conditions
+ * other than those described here, or to purchase support for this
+ * software, please contact iptel.org by e-mail at the following addresses:
+ * [EMAIL PROTECTED]
+ *
+ * sems is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+#ifndef _AmSessionEventHandler_h
+#define _AmSessionEventHandler_h
+
+#include "AmArg.h"
+#include "AmSipMsg.h"
+#include "AmSipEvent.h"
+#include <string>
+using std::string;
+/**
+ * \brief Interface for SIP signaling plugins that
+ * change requests or replies using hooks (ex: session timer).
+ *
+ * From this type of plugins, an AmSessionEventHandler
+ * can be added to an AmSession. AmSessionEventHandler functions
+ * are called as hooks by the Session's event handler function.
+ *
+ * Signaling plugins must inherit from this class.
+ */
+class AmSessionEventHandler
+ : public ArgObject
+{
+public:
+ bool destroy;
+
+ AmSessionEventHandler()
+ : destroy(true) {}
+
+ virtual ~AmSessionEventHandler() {}
+ /*
+ * All the methods return true if the event processing
+ * shall be stopped after them.
+ */
+ virtual bool process(AmEvent*);
+ virtual bool onSipEvent(AmSipEvent*);
+ virtual bool onSipRequest(const AmSipRequest&);
+ virtual bool onSipReply(const AmSipReply&);
+
+ virtual bool onSendRequest(const string& method,
+ const string& content_type,
+ const string& body,
+ string& hdrs,
+ int flags,
+ unsigned int cseq);
+
+ virtual bool onSendReply(const AmSipRequest& req,
+ unsigned int code,
+ const string& reason,
+ const string& content_type,
+ const string& body,
+ string& hdrs,
+ int flags);
+};
+
+
+#if __GNUC__ < 3
+#define CALL_EVENT_H(method,args...) \
+ do{\
+ vector<AmSessionEventHandler*>::iterator evh =
ev_handlers.begin(); \
+ bool stop = false; \
+ while((evh != ev_handlers.end()) && !stop){ \
+ stop = (*evh)->method( ##args ); \
+ evh++; \
+ } \
+ if(stop) \
+ return; \
+ }while(0)
+#else
+#define CALL_EVENT_H(method,...) \
+ do{\
+ vector<AmSessionEventHandler*>::iterator evh =
ev_handlers.begin(); \
+ bool stop = false; \
+ while((evh != ev_handlers.end()) && !stop){ \
+ stop = (*evh)->method( __VA_ARGS__ ); \
+ evh++; \
+ } \
+ if(stop) \
+ return; \
+ }while(0)
+#endif
+
+#endif
Property changes on: trunk/core/AmSessionEventHandler.h
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev