diff --git a/src/mbooster/eventhandler.cpp b/src/common/eventhandler.cpp similarity index 100% rename from src/mbooster/eventhandler.cpp rename to src/common/eventhandler.cpp diff --git a/src/mbooster/eventhandler.h b/src/common/eventhandler.h similarity index 100% rename from src/mbooster/eventhandler.h rename to src/common/eventhandler.h diff --git a/src/mbooster/CMakeLists.txt b/src/mbooster/CMakeLists.txt index 4ad246c..1b2a3cf 100644 --- a/src/mbooster/CMakeLists.txt +++ b/src/mbooster/CMakeLists.txt @@ -2,18 +2,20 @@ include(${QT_USE_FILE}) set(LAUNCHER "${CMAKE_HOME_DIRECTORY}/src/launcherlib") +set(COMMON "${CMAKE_HOME_DIRECTORY}/src/common") -include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_HOME_DIRECTORY}/src/common ${LAUNCHER}) +include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${COMMON} ${LAUNCHER}) # Hide all symbols except the ones explicitly exported in the code (like main()) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden") # Set sources -set(SRC mbooster.cpp pluginfactory.cpp eventhandler.cpp ${LAUNCHER}/appdata.cpp ${LAUNCHER}/booster.cpp +set(SRC mbooster.cpp pluginfactory.cpp ${LAUNCHER}/appdata.cpp ${LAUNCHER}/booster.cpp ${LAUNCHER}/connection.cpp ${LAUNCHER}/logger.cpp -${LAUNCHER}/singleinstance.cpp ${LAUNCHER}/socketmanager.cpp) +${LAUNCHER}/singleinstance.cpp ${LAUNCHER}/socketmanager.cpp +${COMMON}/eventhandler.cpp) -set(MOC_HDRS eventhandler.h) +set(MOC_HDRS ${COMMON}/eventhandler.h) qt4_wrap_cpp(MOC_SRC ${MOC_HDRS}) # Set libraries to be linked. diff --git a/src/mbooster/mbooster.cpp b/src/mbooster/mbooster.cpp index ffae20c..e89c041 100644 --- a/src/mbooster/mbooster.cpp +++ b/src/mbooster/mbooster.cpp @@ -20,7 +20,6 @@ #include "mbooster.h" #include "logger.h" #include "connection.h" -#include #ifdef HAVE_MCOMPONENTCACHE #include diff --git a/src/qdeclarativebooster/CMakeLists.txt b/src/qdeclarativebooster/CMakeLists.txt index 43c282b..e773851 100644 --- a/src/qdeclarativebooster/CMakeLists.txt +++ b/src/qdeclarativebooster/CMakeLists.txt @@ -4,13 +4,17 @@ include(FindX11) include(${QT_USE_FILE}) set(LAUNCHER "${CMAKE_HOME_DIRECTORY}/src/launcherlib") +set(COMMON "${CMAKE_HOME_DIRECTORY}/src/common") -include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_HOME_DIRECTORY}/src/common ${LAUNCHER}) +include_directories(${CMAKE_CURRENT_SOURCE_DIR} ${COMMON} ${LAUNCHER}) # Set sources set(PLUGINSRC qdeclarativebooster.cpp pluginfactory.cpp ${LAUNCHER}/appdata.cpp ${LAUNCHER}/booster.cpp ${LAUNCHER}/connection.cpp ${LAUNCHER}/logger.cpp -${LAUNCHER}/singleinstance.cpp ${LAUNCHER}/socketmanager.cpp) +${LAUNCHER}/singleinstance.cpp ${LAUNCHER}/socketmanager.cpp ${COMMON}/eventhandler.cpp) +set(MOC_HDRS ${COMMON}/eventhandler.h) +qt4_wrap_cpp(MOC_SRC ${MOC_HDRS}) + set(LIBSRC mdeclarativecache.cpp mdeclarativecache.h mdeclarativecache_p.h) # Set executables @@ -19,7 +23,7 @@ set_target_properties(mdeclarativecache PROPERTIES VERSION 0.1 SOVERSION 0) target_link_libraries(mdeclarativecache ${LIBDL} ${QT_QTCORE_LIBRARY} ${QT_QTDECLARATIVE_LIBRARY} ${QT_QTGUI_LIBRARY} ${X11_LIBRARIES}) -add_library(qdeclarativebooster MODULE ${PLUGINSRC}) +add_library(qdeclarativebooster MODULE ${PLUGINSRC} ${MOC_SRC}) set_target_properties(qdeclarativebooster PROPERTIES COMPILE_FLAGS -fvisibility=hidden) target_link_libraries(qdeclarativebooster ${LIBDL} "-L. -lmdeclarativecache") diff --git a/src/qdeclarativebooster/qdeclarativebooster.cpp b/src/qdeclarativebooster/qdeclarativebooster.cpp index 8a31678..0a5f0ce 100644 --- a/src/qdeclarativebooster/qdeclarativebooster.cpp +++ b/src/qdeclarativebooster/qdeclarativebooster.cpp @@ -19,6 +19,7 @@ #include "qdeclarativebooster.h" #include "mdeclarativecache.h" +#include "connection.h" const string QDeclarativeBooster::m_socketId = "/tmp/boostd"; const string QDeclarativeBooster::m_temporaryProcessName = "booster-d"; @@ -53,3 +54,43 @@ bool QDeclarativeBooster::preload() MDeclarativeCache::populate(); return true; } + +bool QDeclarativeBooster::receiveDataFromInvoker(int socketFd) +{ + // Use the default implementation if in boot mode + // (it won't require QApplication running). + + if (bootMode()) + { + return Booster::receiveDataFromInvoker(socketFd); + } + else + { + // Setup the conversation channel with the invoker. + setConnection(new Connection(socketFd)); + + EventHandler handler(this); + handler.runEventLoop(); + + if (!connection()->connected()) + { + return false; + } + + // Receive application data from the invoker + if(!connection()->receiveApplicationData(appData())) + { + connection()->close(); + return false; + } + + // Close the connection if exit status doesn't need + // to be sent back to invoker + if (!connection()->isReportAppExitStatusNeeded()) + { + connection()->close(); + } + + return true; + } +} diff --git a/src/qdeclarativebooster/qdeclarativebooster.h b/src/qdeclarativebooster/qdeclarativebooster.h index b206240..af57362 100644 --- a/src/qdeclarativebooster/qdeclarativebooster.h +++ b/src/qdeclarativebooster/qdeclarativebooster.h @@ -21,6 +21,7 @@ #define QDECLARATIVEBOOSTER_H #include "booster.h" +#include "eventhandler.h" /*! * \class QDeclarativeBooster. @@ -66,6 +67,9 @@ protected: //! \reimp virtual const string & socketId() const; + //! \reimp + virtual bool receiveDataFromInvoker(int socketFd); + private: //! Disable copy-constructor diff --git a/tests/Common/unittests/ut_daemon/CMakeLists.txt b/tests/Common/unittests/ut_daemon/CMakeLists.txt index a73b38b..396969a 100644 --- a/tests/Common/unittests/ut_daemon/CMakeLists.txt +++ b/tests/Common/unittests/ut_daemon/CMakeLists.txt @@ -1,5 +1,7 @@ # Set sources set(LAUNCHER ${CMAKE_HOME_DIRECTORY}/src/launcherlib) +set(COMMON "${CMAKE_HOME_DIRECTORY}/src/common") + set(SRC ut_daemon.cpp ${LAUNCHER}/appdata.cpp ${LAUNCHER}/booster.cpp ${LAUNCHER}/boosterfactory.cpp ${LAUNCHER}/boosterpluginregistry.cpp ${LAUNCHER}/daemon.cpp ${LAUNCHER}/connection.cpp ${LAUNCHER}/logger.cpp ${LAUNCHER}/singleinstance.cpp ${LAUNCHER}/socketmanager.cpp) diff --git a/tests/Common/unittests/ut_dbooster/CMakeLists.txt b/tests/Common/unittests/ut_dbooster/CMakeLists.txt index 9cf69f0..c6d8548 100644 --- a/tests/Common/unittests/ut_dbooster/CMakeLists.txt +++ b/tests/Common/unittests/ut_dbooster/CMakeLists.txt @@ -1,14 +1,15 @@ set(LAUNCHER ${CMAKE_HOME_DIRECTORY}/src/launcherlib) set(DBOOSTER ${CMAKE_HOME_DIRECTORY}/src/qdeclarativebooster) +set(COMMON "${CMAKE_HOME_DIRECTORY}/src/common") # Set sources set(SRC ut_dbooster.cpp ${LAUNCHER}/appdata.cpp ${LAUNCHER}/booster.cpp -${LAUNCHER}/connection.cpp +${LAUNCHER}/connection.cpp ${COMMON}/eventhandler.cpp ${LAUNCHER}/logger.cpp ${DBOOSTER}/qdeclarativebooster.cpp ${LAUNCHER}/singleinstance.cpp ${LAUNCHER}/socketmanager.cpp) # Set moc headers -set(MOC_HDRS ut_dbooster.h) +set(MOC_HDRS ut_dbooster.h ${COMMON}/eventhandler.h) # Run moc qt4_wrap_cpp(MOC_SRC ${MOC_HDRS}) diff --git a/tests/Common/unittests/ut_mbooster/CMakeLists.txt b/tests/Common/unittests/ut_mbooster/CMakeLists.txt index 5e9a065..9592726 100644 --- a/tests/Common/unittests/ut_mbooster/CMakeLists.txt +++ b/tests/Common/unittests/ut_mbooster/CMakeLists.txt @@ -1,15 +1,16 @@ set(LAUNCHER ${CMAKE_HOME_DIRECTORY}/src/launcherlib) set(MBOOSTER ${CMAKE_HOME_DIRECTORY}/src/mbooster) +set(COMMON "${CMAKE_HOME_DIRECTORY}/src/common") # Set sources set(SRC ut_mbooster.cpp ${LAUNCHER}/appdata.cpp ${LAUNCHER}/booster.cpp ${LAUNCHER}/connection.cpp ${LAUNCHER}/logger.cpp -${MBOOSTER}/mbooster.cpp ${MBOOSTER}/eventhandler.cpp +${MBOOSTER}/mbooster.cpp ${COMMON}/eventhandler.cpp ${LAUNCHER}/singleinstance.cpp ${LAUNCHER}/socketmanager.cpp) # Set moc headers -set(MOC_HDRS ut_mbooster.h ${MBOOSTER}/eventhandler.h) +set(MOC_HDRS ut_mbooster.h ${COMMON}/eventhandler.h) # Run moc qt4_wrap_cpp(MOC_SRC ${MOC_HDRS})