Configure on-demand with socket activation on licensing TV 55/293355/15
authorYoungHun Kim <yh8004.kim@samsung.com>
Thu, 25 May 2023 02:19:05 +0000 (11:19 +0900)
committerYoungHun Kim <yh8004.kim@samsung.com>
Wed, 7 Feb 2024 22:50:01 +0000 (07:50 +0900)
Change-Id: Ia70c2696231b58d52fd950addae28a8fbbcc7b14

12 files changed:
CMakeLists.txt
client/CMakeLists.txt
client/src/muse_client.c
core/include/muse_core_internal.h
isu/CMakeLists.txt
packaging/muse-server-vd_product_ltv.service [new file with mode: 0644]
packaging/muse-server.socket [new file with mode: 0644]
packaging/mused.spec
server/CMakeLists.txt
server/include/muse_server_config.h
server/src/muse_server_connection.c
unittest/CMakeLists.txt

index 48e8f9c..74cb5ba 100644 (file)
@@ -1,5 +1,4 @@
-
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6...2.8.12)
 SET(MUSE_CORE "muse-core")
 
 PROJECT(${MUSE_CORE})
@@ -31,6 +30,10 @@ SET(dependents ${dependents} " lwipc")
 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DMUSE_USE_LWIPC")
 ENDIF(${MUSE_LWIPC_ENABLE})
 
+IF(${MUSE_LW})
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DMUSE_ONDEMAND -DMUSE_LITE")
+ENDIF(${MUSE_LW})
+
 IF(${MUSE_TTRACE_ENABLE})
 SET(dependents ${dependents} " ttrace")
 SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DMUSE_TTRACE_LOG")
index 441795e..ecd79b5 100644 (file)
@@ -1,5 +1,4 @@
-
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6...2.8.12)
 SET(MUSE_CLIENT "muse-client")
 
 PROJECT(${MUSE_CLIENT})
index b1c924b..b806f5b 100644 (file)
@@ -235,10 +235,12 @@ static int _muse_client_new(muse_channel_e channel)
        int fd = -1;
        ms_boost_t bst = { 0 };
 
+#ifndef MUSE_ONDEMAND
        if (!muse_server_is_ready()) {
                LOGE("muse server is not ready");
                return MM_ERROR_UNKNOWN;
        }
+#endif
 
        if (channel == MUSE_CHANNEL_MSG)
                _mc_table_new();
index ff3b4d1..46371f7 100644 (file)
@@ -130,8 +130,10 @@ extern "C" {
 
 typedef enum {
        MUSE_PLAYER,
+#ifndef MUSE_LITE
        MUSE_CAMERA,
        MUSE_RECORDER,
+#endif
        MUSE_DRM_SVC,
        MUSE_EPPLAYER,
        MUSE_MODULE_MAX
index 427195d..b4ae7a7 100644 (file)
@@ -1,4 +1,4 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6...2.8.12)
 PROJECT(ISU C)
 
 INSTALL(FILES isu.cfg DESTINATION /etc/isu/muse-server/ PERMISSIONS OWNER_WRITE OWNER_READ)
diff --git a/packaging/muse-server-vd_product_ltv.service b/packaging/muse-server-vd_product_ltv.service
new file mode 100644 (file)
index 0000000..5fe1a0c
--- /dev/null
@@ -0,0 +1,19 @@
+[Unit]
+Description=muse server of vd product (tv)
+DefaultDependencies=no
+Requires=sysinit.target
+After=sysinit.target
+
+[Service]
+Type=simple
+User=multimedia_fw
+Group=multimedia_fw
+SmackProcessLabel=System
+ExecStart=/usr/bin/boostShell -a -r 5 -t 5000 -p /usr/bin/muse-server
+ExecStopPost=/usr/bin/ewaiter -r "/run/mused/muse_server_ready"
+MemoryLimit=300M
+EnvironmentFile=/run/tizen-system-env
+EnvironmentFile=/run/xdg-root-env
+SupplementaryGroups=priv_mediastorage priv_camera priv_recorder
+Capabilities=cap_dac_override=i
+SecureBits=keep-caps
diff --git a/packaging/muse-server.socket b/packaging/muse-server.socket
new file mode 100644 (file)
index 0000000..4908ef7
--- /dev/null
@@ -0,0 +1,9 @@
+[Socket]
+SocketUser=multimedia_fw
+SocketGroup=multimedia_fw
+ListenStream=/run/mused/muse_server_msg.socket
+Service=muse-server.service
+SocketMode=0777
+
+[Install]
+WantedBy=sockets.target
index 1ba9e11..75dd831 100644 (file)
@@ -9,7 +9,9 @@ Source1:    muse-server.service
 Source2:    gtest.input
 Source4:    muse-server-vd_product_tv.service
 Source5:    muse-server-vd_product_audio.service
+Source6:    muse-server.socket
 Source7:    muse-server.path
+Source8:    muse-server-vd_product_ltv.service
 BuildRequires: cmake
 BuildRequires: pkgconfig(libsystemd)
 BuildRequires: pkgconfig(capi-system-info)
@@ -79,12 +81,16 @@ export CXXFLAGS+=" -fprofile-arcs -ftest-coverage -DMUSE_GCOV_TEST "
 export LDFLAGS+=" -lgcov "
 %endif
 
+%if ("%{sec_buildconf_optimized_memory}" == "1")
+%cmake . -DCMAKE_INSTALL_PREFIX=/usr -DFULLVER=%{version} -DMAJORVER=${MAJORVER} -DLIBDIR=%{_libdir} -DTZ_SYS_DATA=%TZ_SYS_DATA -DMUSE_REGISTER_VIP=1 -DMUSE_TTRACE_ENABLE=1 -DMUSE_LWIPC_ENABLE=1 -DMUSE_BOOST_ENABLE=1 -DMUSE_LW=1
+%else
 %if ("%{_vd_cfg_product_type}" == "AUDIO") || ("%{_vd_cfg_product_type}" == "TV") || ("%{_vd_cfg_product_type}" == "LFD") || ("%{_vd_cfg_product_type}" == "HTV") || ("%{_vd_cfg_product_type}" == "AV") || ("%{_vd_cfg_product_type}" == "IWB") || ("%{_vd_cfg_product_type}" == "WALL")
 %cmake . -DCMAKE_INSTALL_PREFIX=/usr -DFULLVER=%{version} -DMAJORVER=${MAJORVER} -DLIBDIR=%{_libdir} -DTZ_SYS_DATA=%TZ_SYS_DATA -DMUSE_REGISTER_VIP=1 -DMUSE_TTRACE_ENABLE=1 -DMUSE_LWIPC_ENABLE=1 -DMUSE_BOOST_ENABLE=1
 %else
 export CFLAGS+=" -DMUSE_USE_POWER_OFF_STATE_CHANGE -DMUSE_USE_WATCHDOG"
 %cmake . -DCMAKE_INSTALL_PREFIX=/usr -DFULLVER=%{version} -DMAJORVER=${MAJORVER} -DLIBDIR=%{_libdir} -DTZ_SYS_DATA=%TZ_SYS_DATA -DMUSE_GTESTS_BUILD=%{?gtests:1}%{!?gtests:0} -DMUSE_STORAGE_ENABLE=1
 %endif
+%endif
 
 make %{?jobs:-j%jobs}
 
@@ -93,6 +99,12 @@ rm -rf %{buildroot}
 
 %make_install
 
+%if ("%{sec_buildconf_optimized_memory}" == "1")
+mkdir -p %{buildroot}%{_unitdir}/sockets.target.wants
+install -m 0644 %SOURCE6 %{buildroot}%{_unitdir}/muse-server.socket
+%install_service sockets.target.wants muse-server.socket
+install -m 0644 %SOURCE8 %{buildroot}%{_unitdir}/muse-server.service
+%else
 %if ("%{_vd_cfg_product_type}" == "AUDIO")
 mkdir -p %{buildroot}%{_unitdir}/stater.target.wants
 install -m 0644 %SOURCE5 %{buildroot}%{_unitdir}/muse-server.service
@@ -111,6 +123,7 @@ install -m 0644 %SOURCE7 %{buildroot}%{_unitdir}/muse-server.path
 
 %endif
 %endif
+%endif
 
 mkdir -p %{buildroot}/var/log/%{name}
 mkdir -p %{buildroot}%{TZ_SYS_DATA}/%{name}
@@ -135,6 +148,10 @@ chsmack -a "System::Shared" /var/log/%{name}
 %{_libdir}/libmuse-*.so.*
 %license LICENSE.APLv2
 %{_unitdir}/muse-server.service
+%if ("%{sec_buildconf_optimized_memory}" == "1")
+%{_unitdir}/muse-server.socket
+%{_unitdir}/sockets.target.wants/muse-server.socket
+%else
 %if ("%{_vd_cfg_product_type}" == "AUDIO")
 %{_unitdir}/starter.target.wants/muse-server.service
 %else
@@ -146,6 +163,8 @@ chsmack -a "System::Shared" /var/log/%{name}
 %{_unitdir}/muse-server.path
 %endif
 %endif
+%endif
+
 %{TZ_SYS_DATA}/%{name}
 /var/log/%{name}
 %{_bindir}/*
index b55d968..df87ac5 100644 (file)
@@ -1,5 +1,4 @@
-
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6...2.8.12)
 SET(MUSE_SERVER "muse-server")
 
 PROJECT(${MUSE_SERVER})
index b3b5c1c..64b0079 100644 (file)
@@ -62,7 +62,7 @@ extern "C" {
 #define DEFAULT_WATCHDOG_DISABLED_API_INDEX            -1 /* Watchdog is applied to all dispatcher functions */
 #define DEFAULT_MAX_INSTANCE                                   -1 /* Unlimited */
 #define DEFAULT_CAUTION_INSTANCE                               -1
-#define DEFAULT_ON_DEMAND_MAX_IDLE_TIME                        600 /* 10 minute */
+#define DEFAULT_ON_DEMAND_MAX_IDLE_TIME                        300 /* 5 minute */
 #define DEFAULT_ON_DEMAND_MAX_IDLE_MEMORY              30000 /* 30MB */
 #define DEFAULT_IDLE_STATE_WAIT_TIME                   10 /* seconds */
 
index 4e12f61..e62e215 100644 (file)
@@ -69,7 +69,7 @@ static void _ms_connection_module_instance_info(muse_module_h m, ms_connection_t
 
 int ms_connection_register(muse_module_h m)
 {
-       int caution_instance;
+       int caution_instance, idx;
        GQueue *queue;
        ms_connection_t *connection = NULL;
        g_autoptr(GMutexLocker) locker = NULL;
@@ -97,9 +97,10 @@ int ms_connection_register(muse_module_h m)
        caution_instance = ms_config_get_caution_instance(m->idx);
 
        if (caution_instance != DEFAULT_CAUTION_INSTANCE && connection->instance_count[m->idx] > caution_instance) {
-               LOGI("[MUSE_MODULE_COMMAND_CREATE_CAUTION] player # %d | camera # %d | recorder # %d > %d",
-                       connection->instance_count[MUSE_PLAYER], connection->instance_count[MUSE_CAMERA],
-                       connection->instance_count[MUSE_RECORDER], caution_instance);
+               for (idx = MUSE_PLAYER; idx < MUSE_MODULE_MAX; idx++) {
+                       LOGI("[MUSE_MODULE_COMMAND_CREATE_CAUTION] %s # %d > %d",
+                               ms_config_get_host_name(idx), connection->instance_count[idx], caution_instance);
+               }
                ms_cmd_dispatch(m, MUSE_MODULE_COMMAND_CREATE_CAUTION);
        }
 
index 8fb14eb..16031ef 100644 (file)
@@ -1,5 +1,4 @@
-
-CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
+CMAKE_MINIMUM_REQUIRED(VERSION 2.6...2.8.12)
 LINK_DIRECTORIES(${CMAKE_BINARY_DIR})
 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/server/include)
 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/client/include)