Switch to single-threading if only one service is supported 49/115549/1
authorMu-Woong Lee <muwoong.lee@samsung.com>
Mon, 20 Feb 2017 09:28:18 +0000 (18:28 +0900)
committerMu-Woong Lee <muwoong.lee@samsung.com>
Mon, 20 Feb 2017 09:28:18 +0000 (18:28 +0900)
Change-Id: If650d3f9a51cf13725de1f987820d97b51006519
Signed-off-by: Mu-Woong Lee <muwoong.lee@samsung.com>
src/ServiceLoader.cpp
src/ServiceLoader.h

index ec5e6f8..44fe578 100644 (file)
@@ -31,10 +31,20 @@ ServiceLoader::ServiceLoader()
 
 bool ServiceLoader::load(GDBusConnection* conn)
 {
-       //__load<AppHistoryService>(conn);
-       __load<SensorRecorderService>(conn);
-       __load<ContextStoreService>(conn);
-       //__load<JobSchedulerService>(conn);
+       //__create<AppHistoryService>(conn);
+       __create<SensorRecorderService>(conn);
+       __create<ContextStoreService>(conn);
+       //__create<JobSchedulerService>(conn);
+
+       if (__services.size() == 1) {
+               _I("Switch to single-threading");
+               ServiceBase::setSingleThreading();
+       }
+
+       for (auto& svc : __services) {
+               if (!svc->start())
+                       return false;
+       }
 
        return !__services.empty();
 }
index ca87135..2819d0f 100644 (file)
@@ -33,7 +33,7 @@ namespace ctx {
 
                static std::vector<ServiceBase*> __services;
 
-               template<typename ServiceType> static void __load(GDBusConnection* conn)
+               template<typename ServiceType> static void __create(GDBusConnection* conn)
                {
                        ServiceBase *svc = NULL;
                        try {
@@ -42,10 +42,6 @@ namespace ctx {
                                _W("Service creation failed (%s)", e.what());
                                return;
                        }
-                       if (!svc->start()) {
-                               delete svc;
-                               return;
-                       }
                        __services.push_back(svc);
                }
        };