187 lines
3.3 KiB
C
187 lines
3.3 KiB
C
/****************************************************************************
|
|
* This file is part of the project AqHome.
|
|
* AqHome (c) by 2023 Martin Preuss, all rights reserved.
|
|
*
|
|
* The license for this file can be found in the file COPYING which you
|
|
* should have received along with this file.
|
|
****************************************************************************/
|
|
|
|
#ifdef HAVE_CONFIG_H
|
|
# include <config.h>
|
|
#endif
|
|
|
|
|
|
#include "aqhome/service/service_p.h"
|
|
|
|
#include <gwenhywfar/debug.h>
|
|
|
|
|
|
|
|
GWEN_INHERIT_FUNCTIONS(AQH_SERVICE);
|
|
GWEN_LIST_FUNCTIONS(AQH_SERVICE, AQH_Service);
|
|
|
|
|
|
|
|
|
|
AQH_SERVICE *AQH_Service_new(void)
|
|
{
|
|
AQH_SERVICE *sv;
|
|
|
|
GWEN_NEW_OBJECT(AQH_SERVICE, sv);
|
|
GWEN_INHERIT_INIT(AQH_SERVICE, sv);
|
|
GWEN_LIST_INIT(AQH_SERVICE, sv);
|
|
|
|
sv->userList=AQH_User_List_new();
|
|
sv->moduleList=AQH_Module_List_new();
|
|
sv->sessionList=AQH_Session_List_new();
|
|
|
|
return sv;
|
|
}
|
|
|
|
|
|
|
|
void AQH_Service_free(AQH_SERVICE *sv)
|
|
{
|
|
if (sv) {
|
|
GWEN_LIST_FINI(AQH_SERVICE, sv);
|
|
AQH_User_List_free(sv->userList);
|
|
AQH_Module_List_free(sv->moduleList);
|
|
AQH_Session_List_free(sv->sessionList);
|
|
GWEN_INHERIT_FINI(AQH_SERVICE, sv);
|
|
GWEN_FREE_OBJECT(sv);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
AQH_USER_LIST *AQH_Service_GetUserList(const AQH_SERVICE *sv)
|
|
{
|
|
return sv?sv->userList:NULL;
|
|
}
|
|
|
|
|
|
|
|
AQH_USER *AQH_Service_GetUserById(const AQH_SERVICE *sv, uint32_t id)
|
|
{
|
|
return sv?AQH_User_List_GetById(sv->userList, id):NULL;
|
|
}
|
|
|
|
|
|
|
|
AQH_USER *AQH_Service_GetUserByAlias(const AQH_SERVICE *sv, const char *s)
|
|
{
|
|
return sv?AQH_User_List_GetByAlias(sv->userList, s):NULL;
|
|
}
|
|
|
|
|
|
|
|
void AQH_Service_AddUser(AQH_SERVICE *sv, AQH_USER *u)
|
|
{
|
|
if (sv && u)
|
|
AQH_User_List_Add(u, sv->userList);
|
|
}
|
|
|
|
|
|
|
|
void AQH_Service_DelUser(AQH_SERVICE *sv, uint32_t userId)
|
|
{
|
|
if (sv && userId) {
|
|
AQH_USER *u;
|
|
|
|
u=AQH_User_List_GetById(sv->userList, userId);
|
|
if (u) {
|
|
AQH_User_List_Del(u);
|
|
AQH_User_free(u);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
AQH_MODULE_LIST *AQH_Service_GetModuleList(const AQH_SERVICE *sv)
|
|
{
|
|
return sv?sv->moduleList:NULL;
|
|
}
|
|
|
|
|
|
|
|
AQH_MODULE *AQH_Service_GetModuleById(const AQH_SERVICE *sv, uint32_t id)
|
|
{
|
|
return sv?AQH_Module_List_GetById(sv->moduleList, id):NULL;
|
|
}
|
|
|
|
|
|
|
|
AQH_MODULE *AQH_Service_GetModuleByName(const AQH_SERVICE *sv, const char *s)
|
|
{
|
|
return sv?AQH_Module_List_GetByName(sv->moduleList, s):NULL;
|
|
}
|
|
|
|
|
|
|
|
void AQH_Service_AddModule(AQH_SERVICE *sv, AQH_MODULE *m)
|
|
{
|
|
if (sv && m)
|
|
AQH_Module_List_Add(m, sv->moduleList);
|
|
}
|
|
|
|
|
|
|
|
void AQH_Service_DelModule(AQH_SERVICE *sv, uint32_t moduleId)
|
|
{
|
|
if (sv && moduleId) {
|
|
AQH_MODULE *m;
|
|
|
|
m=AQH_Module_List_GetById(sv->moduleList, moduleId);
|
|
if (m) {
|
|
AQH_Module_List_Del(m);
|
|
AQH_Module_free(m);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
AQH_SESSION_LIST *AQH_Service_GetSessionList(const AQH_SERVICE *sv)
|
|
{
|
|
return sv?sv->sessionList:NULL;
|
|
}
|
|
|
|
|
|
|
|
AQH_SESSION *AQH_Service_GetSessionById(const AQH_SERVICE *sv, uint32_t sessionId)
|
|
{
|
|
return sv?AQH_Session_List_GetById(sv->sessionList, sessionId):NULL;
|
|
}
|
|
|
|
|
|
|
|
void AQH_Service_AddSession(AQH_SERVICE *sv, AQH_SESSION *session)
|
|
{
|
|
if (sv && session)
|
|
AQH_Session_List_Add(session, sv->sessionList);
|
|
}
|
|
|
|
|
|
|
|
void AQH_Service_DelSession(AQH_SERVICE *sv, uint32_t id)
|
|
{
|
|
if (sv && id) {
|
|
AQH_SESSION *session;
|
|
|
|
session=AQH_Session_List_GetById(sv->sessionList, id);
|
|
if (session) {
|
|
AQH_Session_List_Del(session);
|
|
AQH_Session_free(session);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|