add_subdirectory(common)
add_subdirectory(libsessiond)
add_subdirectory(sessiond)
+add_subdirectory(clientExample)
option(ENABLE_TARGET_TESTS "On target tests" ON)
if(ENABLE_TARGET_TESTS)
cmake_minimum_required(VERSION 3.10)
+project(subsession-client-example)
-# set the project name
-project(SessiondTester)
+set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -Wall -fPIE -Wno-error=shadow -Werror=missing-field-initializers -pthread")
+set(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
-#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -fPIE -Wno-error=shadow -Werror=missing-field-initializers")
-#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -fPIE -Wno-error=shadow -Werror=missing-field-initializers")
-
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
-#set(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie")
find_package(PkgConfig)
-pkg_check_modules(DEPS REQUIRED IMPORTED_TARGET glib-2.0 gio-2.0 gobject-2.0 libsessiond capi-system-info)
-
-
-SET(requires
- capi-system-info
- libsessiond
- dlog
- gio-2.0
- gio-unix-2.0
- glib-2.0
-)
-
-INCLUDE(FindPkgConfig)
-pkg_check_modules(${fw_name} REQUIRED ${requires})
-FOREACH(flag ${${fw_name}_CFLAGS})
- SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}")
-ENDFOREACH(flag)
+pkg_check_modules(DEPS REQUIRED IMPORTED_TARGET glib-2.0 gio-2.0 gobject-2.0)
-# add the executable
-add_executable(SessiondTester app/main.cpp)
-target_link_libraries(SessiondTester PRIVATE PkgConfig::DEPS)
+add_executable(subsession-client-example app/main.cpp)
+target_link_libraries(subsession-client-example PRIVATE PkgConfig::DEPS libsessiond)
+install(TARGETS subsession-client-example)
#include <iostream>
#include <gio/gio.h>
#include <thread>
+#include <cassert>
#include "sessiond.h"
#define SESSION_UID 5001
} test_user_data_cb_t;
-int test_subsession_switch_user_completion_callback(subsession_event_info info, void *cb_data) {
+void test_subsession_switch_user_completion_callback(subsession_event_info info, void *cb_data) {
g_atomic_int_inc(&callbackCount);
test_user_data_cb_t *user_data = (test_user_data_cb_t *)cb_data;
- user_data->session_uid = info.switch_user.session_uid;
+ user_data->session_uid = info.session_uid;
user_data->switch_id = info.switch_user.switch_id;
user_data->user_id = info.switch_user.next_user;
user_data->prev_user_id = info.switch_user.prev_user;
user_data->callback_result = 0;
-
- return 0;
}
typedef struct {
return TRUE;
}
-int test_reply_adduser_callback (int result, void *cb_data) {
+void test_reply_adduser_callback (int result, void *cb_data) {
+
+ assert(cb_data);
g_atomic_int_inc(&callback_pending_reference);
- if (cb_data == NULL) {
- return -EBADR;
- }
test_user_data *user_data = (test_user_data *)cb_data;
user_data->callback_result = result;
- if (result < 0) {
- return result;
- }
+ if (result < 0)
+ return;
+
g_mutex_unlock(&mutex);
- return 0;
}
-int test_reply_removeuser_callback (int result, void *cb_data) {
+void test_reply_removeuser_callback (int result, void *cb_data) {
+
+ assert(cb_data);
g_atomic_int_inc(&callback_pending_reference);
- if (cb_data == NULL) {
- return -EBADR;
- }
test_user_data *user_data = (test_user_data *)cb_data;
user_data->callback_result = result;
-
- if (result < 0) {
- return result;
- }
-
- return 0;
}
-int test_reply_switchuser_callback (int result, void *cb_data){
+void test_reply_switchuser_callback (int result, void *cb_data){
test_user_data *user_data = (test_user_data *)cb_data;
user_data->callback_result = result;
g_mutex_unlock(&mutex);
- return 0;
}
GMainLoop* loop = NULL;
g_mutex_clear(&mutex);
printf("Test program end\n");
return 0;
-}
\ No newline at end of file
+}
+++ /dev/null
-<manifest>
- <request>
- <domain name="_"/>
- </request>
-</manifest>
+++ /dev/null
-Name: sessiond_client_example
-Summary: Example client for reference and testing purposes.
-Version: 0.1
-Release: 1
-License: GNU V3
-Source: %{name}-%{version}.tar.gz
-BuildRequires: cmake
-BuildRequires: pkgconfig(capi-base-common)
-BuildRequires: pkgconfig(capi-system-info)
-BuildRequires: pkgconfig(gio-2.0)
-BuildRequires: gtest-devel
-BuildRequires: pkgconfig(libsmack)
-BuildRequires: pkgconfig(dlog)
-BuildRequires: pkgconfig(libsessiond)
-
-
-%description
-This package provides a set of tests for libsessiond.
-It can also be used as a reference client application
-and usage example of prevously mentioned libsessiond.
-
-%prep
-%setup -q
-
-%build
-mkdir -p build
-pushd build
-cmake ..
-make
-
-%install
-mkdir -p %{buildroot}%{_bindir}
-install -m 0755 build/SessiondTester %{buildroot}%{_bindir}/SessiondTester
-
-%clean
-%files
-%{_bindir}/SessiondTester
-
-
Requires: libsessiond = %{version}-%{release}
%description -n libsessiond-tests
+%package -n subsession-client-example
+Summary: Example program using libsessiond API
+Group: Development/Libraries
+%description -n subsession-client-example
+
%prep
%setup -q
%manifest sessiond.manifest
%license LICENSE.MIT
%{_bindir}/test_*
+
+%files -n subsession-client-example
+%manifest sessiond.manifest
+%license LICENSE.MIT
+%{_bindir}/subsession-client-example