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

Reply via email to