r3461 - in trunk/libminisip: . include include/libminisip include/libminisip/media source source/subsystem_media

erik at minisip.org erik at minisip.org
Mon Nov 12 11:58:50 CET 2007


Author: erik
Date: 2007-11-12 11:58:50 +0100 (Mon, 12 Nov 2007)
New Revision: 3461

Added:
   trunk/libminisip/include/libminisip/media/SubsystemMedia.h
   trunk/libminisip/source/subsystem_media/SubsystemMedia.cxx
Modified:
   trunk/libminisip/Makefile.am
   trunk/libminisip/include/Makefile.am
   trunk/libminisip/include/libminisip/Minisip.h
   trunk/libminisip/source/Minisip.cxx
Log:


 * MediaHandler is the media subsystem. It is registred as the receiver
   of the "media" commands. A better name would be "SubsystemMedia".
   This commit adds a "SubsystemMedia" class rather than rename the
   MediaHandler. This makes it possible to move header files that
   are not part of the API from the set of headers that are installed.
   This is very similar to how the it is done in libmsip where "SipStack"
   is a proxy to SipStackInternal that implements the logic, and
   has all the attributes.

   This will speed up the compiles a bit, make the API more clearly
   defined, and make the source code easier to understand.



Modified: trunk/libminisip/Makefile.am
===================================================================
--- trunk/libminisip/Makefile.am	2007-11-10 19:35:38 UTC (rev 3460)
+++ trunk/libminisip/Makefile.am	2007-11-12 10:58:50 UTC (rev 3461)
@@ -70,6 +70,7 @@
 
 
 libmediahandler_src = source/subsystem_media/MediaHandler.cxx \
+			source/subsystem_media/SubsystemMedia.cxx \
 			source/subsystem_media/Session.cxx \
 			source/subsystem_media/MediaStream.cxx \
 			source/subsystem_media/Media.cxx \

Modified: trunk/libminisip/include/Makefile.am
===================================================================
--- trunk/libminisip/include/Makefile.am	2007-11-10 19:35:38 UTC (rev 3460)
+++ trunk/libminisip/include/Makefile.am	2007-11-12 10:58:50 UTC (rev 3461)
@@ -12,6 +12,7 @@
 			libminisip/media/AudioMedia.h \
 			libminisip/media/SessionRegistry.h \
 			libminisip/media/MediaHandler.h \
+			libminisip/media/SubsystemMedia.h \
 			libminisip/media/Media.h \
 			libminisip/media/Session.h \
 			libminisip/media/CallRecorder.h \

Modified: trunk/libminisip/include/libminisip/Minisip.h
===================================================================
--- trunk/libminisip/include/libminisip/Minisip.h	2007-11-10 19:35:38 UTC (rev 3460)
+++ trunk/libminisip/include/libminisip/Minisip.h	2007-11-12 10:58:50 UTC (rev 3461)
@@ -14,6 +14,7 @@
 class ConsoleDebugger;
 class MessageRouter;
 class ConfMessageRouter;
+class SubsystemMedia;
 
 
 class LIBMINISIP_API Minisip : public MObject{
@@ -63,6 +64,7 @@
 
 		std::string confPath;
 		MRef<MediaHandler *> mediaHandler;
+		MRef<SubsystemMedia *> subsystemMedia;
 		MRef<Gui *> gui;
 		MRef<SipSoftPhoneConfiguration *> phoneConf;
 		MRef<Sip *> sip;

Added: trunk/libminisip/include/libminisip/media/SubsystemMedia.h
===================================================================
--- trunk/libminisip/include/libminisip/media/SubsystemMedia.h	                        (rev 0)
+++ trunk/libminisip/include/libminisip/media/SubsystemMedia.h	2007-11-12 10:58:50 UTC (rev 3461)
@@ -0,0 +1,87 @@
+/*
+ Copyright (C) 2004-2007 the Minisip Team
+ 
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+ 
+ This library 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
+ Lesser General Public License for more details.
+ 
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ */
+
+/* Copyright (C) 2007
+ *
+ * Authors: Erik Eliasson <eliasson at it.kth.se>
+*/
+
+#ifndef SUBSYSTEM_MEDIA
+#define SUBSYSTEM_MEDIA
+
+#include<libminisip/libminisip_config.h>
+
+#include<libmutil/MessageRouter.h>
+
+class SipSoftPhoneConfiguration;
+class IpProvider;
+
+class LIBMINISIP_API SubsystemMedia: public CommandReceiver {
+
+	public:
+		/**
+		 * Constructor, created on startup
+		 * @param config reference to the softphone configuration
+		 * @param ipProvider reference to the public IP provider, used
+		 * for NAT traversal mechanisms
+		 */
+		SubsystemMedia( MRef<SipSoftPhoneConfiguration *> config, 
+				MRef<IpProvider *> ipProvider, 
+				MRef<IpProvider *> ip6Provider = NULL );
+
+		virtual ~SubsystemMedia();
+		
+		/**
+		 * @param command the command to handle
+		 */
+		void handleCommand(std::string subsystem, const CommandString & command );
+
+		CommandString handleCommandResp(std::string subsystem, const CommandString& command);
+		
+                /**
+                 * Set the callback (interface) to Minisip's message router.
+                 * 
+                 * The Media handler uses this callback to send message to other subsystems
+                 * of Minisip. 
+                 * 
+                 * @param callback
+                 *     The pointer to the message router object.
+                 */
+                void setMessageRouterCallback(MRef<CommandReceiver*> callback);
+#if 0
+                /**
+                 * Get the callback (interface) to Minisip's message router.
+                 * 
+                 * The Media handler uses this callback to send message to other subsystems
+                 * of Minisip. 
+                 * 
+                 * @returns
+                 *     The pointer to the message router object.
+                 */
+                MRef<CommandReceiver *> getMessageRouterCallback() { return messageRouterCallback;}
+#endif                       
+
+		virtual std::string getMemObjectType() const {return "SubsystemMedia";}
+
+
+
+	private:
+		void *mediaHandler;
+};
+
+#endif

Modified: trunk/libminisip/source/Minisip.cxx
===================================================================
--- trunk/libminisip/source/Minisip.cxx	2007-11-10 19:35:38 UTC (rev 3460)
+++ trunk/libminisip/source/Minisip.cxx	2007-11-12 10:58:50 UTC (rev 3461)
@@ -71,6 +71,7 @@
 #include<libminisip/gui/LogEntry.h>
 #include<libminisip/contacts/ContactDb.h>
 #include<libminisip/media/MediaHandler.h>
+#include<libminisip/media/SubsystemMedia.h>
 #include<libminisip/signaling/conference/ConferenceControl.h>
 #include<libminisip/signaling/conference/ConfCallback.h>
 #include<libminisip/config/ConfBackend.h>
@@ -358,11 +359,15 @@
 #ifdef DEBUG_OUTPUT
 		mout << BOLD << "init 5/9: Creating MediaHandler" << PLAIN << endl;
 #endif
-		mediaHandler = new MediaHandler( phoneConf, ipProvider, ip6Provider );
-		confMessageRouter->setMediaHandler( mediaHandler );
-		messageRouter->addSubsystem("media",*mediaHandler);
-		mediaHandler->setMessageRouterCallback(*messageRouter);
+//		mediaHandler = new MediaHandler( phoneConf, ipProvider, ip6Provider );
+//		confMessageRouter->setMediaHandler( mediaHandler );
+//		messageRouter->addSubsystem("media",*mediaHandler);
+//		mediaHandler->setMessageRouterCallback(*messageRouter);
 
+		subsystemMedia = new SubsystemMedia( phoneConf, ipProvider, ip6Provider );
+		messageRouter->addSubsystem("media",*subsystemMedia);
+		subsystemMedia->setMessageRouterCallback(*messageRouter);
+
 		if( consoleDbg ){
 			consoleDbg->setMediaHandler( mediaHandler );
 		}

Added: trunk/libminisip/source/subsystem_media/SubsystemMedia.cxx
===================================================================
--- trunk/libminisip/source/subsystem_media/SubsystemMedia.cxx	                        (rev 0)
+++ trunk/libminisip/source/subsystem_media/SubsystemMedia.cxx	2007-11-12 10:58:50 UTC (rev 3461)
@@ -0,0 +1,95 @@
+/*
+ Copyright (C) 2004-2006 the Minisip Team
+ 
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+ 
+ This library 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
+ Lesser General Public License for more details.
+ 
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+ */
+
+/* Copyright (C) 2004, 2005, 2006 
+ *
+ * Authors: Erik Eliasson <eliasson at it.kth.se>
+ *          Johan Bilien <jobi at via.ecp.fr>
+*/
+
+#include <config.h>
+
+#include<libminisip/media/SubsystemMedia.h>
+#include<libminisip/media/MediaHandler.h>
+
+#include<string.h>
+#if 0
+#include<libminisip/signaling/sdp/SdpPacket.h>
+#include<libmikey/KeyAgreement.h>
+#include<libminisip/signaling/sip/SipSoftPhoneConfiguration.h>
+#include<libminisip/ipprovider/IpProvider.h>
+#include<libminisip/media/codecs/Codec.h>
+#include<libminisip/media/Session.h>
+#include<libminisip/media/MediaStream.h>
+
+#include<libminisip/media/Media.h>
+#include<libminisip/media/RtpReceiver.h>
+#include<libminisip/media/MediaCommandString.h>
+#include<libmnetutil/UDPSocket.h>
+
+#include<libminisip/media/soundcard/SoundIO.h>
+#include<libminisip/media/soundcard/SoundDevice.h>
+#include<libminisip/media/codecs/Codec.h>
+
+#include<libminisip/media/CallRecorder.h>
+
+#ifdef _WIN32_WCE
+#	include"../include/minisip_wce_extra_includes.h"
+#endif
+
+#endif
+
+using namespace std;
+
+#define MH (*(MRef<MediaHandler*> *) mediaHandler)
+
+SubsystemMedia::SubsystemMedia( MRef<SipSoftPhoneConfiguration *> conf, 
+				MRef<IpProvider *> ipp, 
+				MRef<IpProvider *> ip6p )
+{
+
+	MediaHandler *mh = new MediaHandler(conf, ipp, ip6p);
+	mediaHandler = new MRef<MediaHandler*>(mh);
+
+}
+
+SubsystemMedia::~SubsystemMedia(){
+	if (mediaHandler){
+		MRef<MediaHandler*> * mrefPtr = (MRef<MediaHandler*> *) mediaHandler;
+		//(*mrefPtr)->free();
+		delete mrefPtr;
+		mediaHandler=NULL;
+	}
+}
+
+void SubsystemMedia::setMessageRouterCallback(MRef<CommandReceiver*> callback){
+	MH->setMessageRouterCallback(callback);
+}
+
+CommandString SubsystemMedia::handleCommandResp(string, const CommandString& c){
+	assert(1==0); //Not used
+	return c; // Not reached; masks warning
+}
+
+
+void SubsystemMedia::handleCommand(string subsystem, const CommandString& command ){
+	assert(subsystem=="media");
+	return MH->handleCommand(subsystem, command);
+
+}
+



More information about the Minisip-devel mailing list