diff options
author | christian mueller <christian.ei.mueller@bmw.de> | 2012-01-10 15:58:38 +0100 |
---|---|---|
committer | christian mueller <christian.ei.mueller@bmw.de> | 2012-01-12 00:09:34 +0100 |
commit | 472d0762b68ce0f2a755b4215515a3e031831495 (patch) | |
tree | 276e811f00dfe17cba15c56092b33d67ba2793f6 /AudioManagerDaemon/src/main.cpp | |
parent | 6ebae8c4d3a340c135ed2f5f611a0e1c31994164 (diff) | |
download | audiomanager-472d0762b68ce0f2a755b4215515a3e031831495.tar.gz |
* recreated the header files out of the model. Added versioning support in the headerfiles generated
* ensured compatibility with 64 bit systems while compiling dbus [ changed FindDBUS.cmake]
* updated the README to better support building
* updated typo in introspectable string of DBusWrapper
* reworked including strategie
* added getInterfafeVersion method on all interfaces
* added Interface Versioning support
* added version as part of .so ending
* it is no possible to set a vector of source and sink sound properties at a time
* added interface to ask for all loaded plugins on RoutingSender
* added first version of telnet server (not yet productive) - set to not active in CMakeLists.txt
* added changelog (created out of git commit log)
* added default values for all enum types to be save even on other if communication is on other domain
Diffstat (limited to 'AudioManagerDaemon/src/main.cpp')
-rw-r--r-- | AudioManagerDaemon/src/main.cpp | 67 |
1 files changed, 51 insertions, 16 deletions
diff --git a/AudioManagerDaemon/src/main.cpp b/AudioManagerDaemon/src/main.cpp index 5d840a9..d5c447d 100644 --- a/AudioManagerDaemon/src/main.cpp +++ b/AudioManagerDaemon/src/main.cpp @@ -36,19 +36,21 @@ //todo: make sure all configurations are tested #include <config.h> +#include <SocketHandler.h> #ifdef WITH_DBUS_WRAPPER #include <dbus/DBusWrapper.h> #endif #include "DatabaseHandler.h" -#include "DatabaseObserver.h" -#include "RoutingReceiver.h" -#include "CommandReceiver.h" -#include "ControlReceiver.h" #include "ControlSender.h" #include "CommandSender.h" #include "RoutingSender.h" -#include <SocketHandler.h> +#include "RoutingReceiver.h" +#include "CommandReceiver.h" +#include "ControlReceiver.h" +#include "DatabaseObserver.h" +#include "TelnetServer.h" #include <sys/resource.h> +#include <sys/stat.h> #include <unistd.h> #include <stdlib.h> #include <cstdlib> @@ -58,8 +60,6 @@ #include <string.h> #include <stdio.h> - - #include <dlt/dlt.h> DLT_DECLARE_CONTEXT(AudioManager) @@ -69,19 +69,24 @@ using namespace am; const char* USAGE_DESCRIPTION = "Usage:\tAudioManagerDaemon [options]\n" "options:\t\n" "\t-h: print this message\t\n" + "\t-i: info about current settings \t\n" "\t-v: print version\t\n" "\t-d: daemonize AudioManager \t\n" - "\t-p: path for sqlite database (default is in memory)\t\n" - "\t-c: <Name> use controllerPlugin <Name> (full path with .so ending)\t\n" - "\t-l: <Name> replace command plugin directory with <Name> (full path)\t\n" - "\t-r: <Name> replace routing plugin directory with <Name> (full path)\t\n" - "\t-L: <Name> add command plugin directory with <Name> (full path)\t\n" - "\t-R: <Name> add routing plugin directory with <Name> (full path)\t\n"; + "\t-p<path> path for sqlite database (default is in memory)\t\n" + "\t-t<port> port for telnetconnection\t\n" + "\t-m<max> number of max telnetconnections\t\n" + "\t-c<Name> use controllerPlugin <Name> (full path with .so ending)\t\n" + "\t-l<Name> replace command plugin directory with <Name> (full path)\t\n" + "\t-r<Name> replace routing plugin directory with <Name> (full path)\t\n" + "\t-L<Name> add command plugin directory with <Name> (full path)\t\n" + "\t-R<Name> add routing plugin directory with <Name> (full path)\t\n"; std::string controllerPlugin=std::string(CONTROLLER_PLUGIN); std::vector<std::string> listCommandPluginDirs; std::vector<std::string> listRoutingPluginDirs; std::string databasePath=std::string(":memory:"); +unsigned int telnetport=DEFAULT_TELNETPORT; +unsigned int maxConnections=MAX_TELNETCONNECTIONS; void daemonize () { @@ -136,10 +141,29 @@ void parseCommandLine(int argc, char **argv) { while (optind < argc) { - int option = getopt (argc, argv, "h::v::c::l::r::L::R::d"); + int option = getopt (argc, argv, "h::v::c::l::r::L::R::d::t::m::i::"); switch (option) { + case 'i': + printf("Current settings:\n"); + printf("\tAudioManagerDaemon Version:\t\t%s\n",DAEMONVERSION); + printf("\tTelnet portNumber:\t\t\t%i\n",telnetport); + printf("\tTelnet maxConnections:\t\t\t%i\n",maxConnections); + printf("\tSqlite Database path:\t\t\t%s\n",databasePath.c_str()); + printf("\tControllerPlugin: \t\t\t%s\n",controllerPlugin.c_str()); + printf("\tDirectory of CommandPlugins: \t\t%s\n",listCommandPluginDirs.front().c_str()); + printf("\tDirectory of RoutingPlugins: \t\t%s\n",listRoutingPluginDirs.front().c_str()); + exit(0); + break; + case 't': + assert(atoi(optarg)!=0); + telnetport=atoi(optarg); + break; + case 'm': + assert(atoi(optarg)!=0); + maxConnections=atoi(optarg); + break; case 'p': assert(!controllerPlugin.empty()); databasePath=std::string(optarg); @@ -215,7 +239,6 @@ int main(int argc, char *argv[]) signalChildAction.sa_flags = SA_NOCLDWAIT; sigaction (SIGCHLD, &signalChildAction, NULL); - //Instantiate all classes. Keep in same order ! #ifdef WITH_SOCKETHANDLER_LOOP SocketHandler iSocketHandler; @@ -233,13 +256,15 @@ int main(int argc, char *argv[]) RoutingSender iRoutingSender(listRoutingPluginDirs); CommandSender iCommandSender(listCommandPluginDirs); ControlSender iControlSender(controllerPlugin); - DatabaseObserver iObserver(&iCommandSender, &iRoutingSender); #ifdef WITH_DBUS_WRAPPER #ifdef WITH_SOCKETHANDLER_LOOP CommandReceiver iCommandReceiver(&iDatabaseHandler,&iControlSender,&iSocketHandler,&iDBusWrapper); RoutingReceiver iRoutingReceiver(&iDatabaseHandler,&iRoutingSender,&iControlSender,&iSocketHandler,&iDBusWrapper); ControlReceiver iControlReceiver(&iDatabaseHandler,&iRoutingSender,&iCommandSender,&iSocketHandler); +#ifdef WITH_TELNET + TelnetServer iTelnetServer(&iSocketHandler,&iCommandSender,&iCommandReceiver,&iRoutingSender,&iRoutingReceiver,&iControlSender,&iControlReceiver,&iDatabaseHandler,telnetport,maxConnections); +#endif #else /*WITH_SOCKETHANDLER_LOOP */ CommandReceiver iCommandReceiver(&iDatabaseHandler,&iControlSender,&iDBusWrapper); RoutingReceiver iRoutingReceiver(&iDatabaseHandler,&iRoutingSender,&iControlSender,&iDBusWrapper); @@ -249,8 +274,18 @@ int main(int argc, char *argv[]) CommandReceiver iCommandReceiver(&iDatabaseHandler,&iControlSender,&iSocketHandler); RoutingReceiver iRoutingReceiver(&iDatabaseHandler,&iRoutingSender,&iControlSender,&iSocketHandler); ControlReceiver iControlReceiver(&iDatabaseHandler,&iRoutingSender,&iCommandSender,&iSocketHandler); +#ifdef WITH_TELNET + TelnetServer iTelnetServer(&iSocketHandler,telnetport,maxConnections); +#endif #endif /*WITH_DBUS_WRAPPER*/ +#ifdef WITH_TELNET + DatabaseObserver iObserver(&iCommandSender, &iRoutingSender,&iTelnetServer); +#else + DatabaseObserver iObserver(&iCommandSender, &iRoutingSender); +#endif + + //since the plugins have been loaded by the *Senders before, we can tell the Controller this: iControlSender.hookAllPluginsLoaded(); |