60 lines
2.0 KiB
Python
60 lines
2.0 KiB
Python
# Copyright (c) 2023 Thomas Tuerk (kontakt@thomas-tuerk.de)
|
|
#
|
|
# This file is part of PyAPplus64 (see https://www.thomas-tuerk.de/de/pyapplus64).
|
|
#
|
|
# Use of this source code is governed by an MIT-style
|
|
# license that can be found in the LICENSE file or at
|
|
# https://opensource.org/licenses/MIT.
|
|
|
|
#-*- coding: utf-8 -*-
|
|
|
|
from typing import *
|
|
|
|
if TYPE_CHECKING:
|
|
from .applus import APplusServer
|
|
|
|
|
|
class APplusSysConf:
|
|
"""
|
|
SysConf Zugriff mit Cache über AppServer
|
|
|
|
:param server: die Verbindung zum Server
|
|
:type server: APplusServer
|
|
|
|
"""
|
|
|
|
def __init__(self, server : 'APplusServer') -> None:
|
|
self.client = server.getClient("p2system", "SysConf")
|
|
self.cache : Dict[str, type] = {}
|
|
|
|
def clearCache(self) -> None:
|
|
self.cache = {};
|
|
|
|
def _getGeneral(self, ty:str, f : Callable[[str, str], Any], module:str, name:str, useCache:bool) -> Any:
|
|
cacheKey = module + "/" + name + "/" + ty;
|
|
if useCache and cacheKey in self.cache:
|
|
return self.cache[cacheKey]
|
|
else:
|
|
v = f(module, name);
|
|
self.cache[cacheKey] = v;
|
|
return v;
|
|
|
|
def getString(self, module:str, name:str, useCache:bool=True) -> str:
|
|
return self._getGeneral("string", self.client.service.getString, module, name, useCache);
|
|
|
|
def getInt(self, module:str, name:str, useCache:bool=True) -> int:
|
|
return self._getGeneral("int", self.client.service.getInt, module, name, useCache);
|
|
|
|
def getDouble(self, module:str, name:str, useCache:bool=True) -> float:
|
|
return self._getGeneral("double", self.client.service.getDouble, module, name, useCache);
|
|
|
|
def getBoolean(self, module:str, name:str, useCache:bool=True) -> bool:
|
|
return self._getGeneral("boolean", self.client.service.getBoolean, module, name, useCache);
|
|
|
|
def getList(self, module : str, name:str, useCache:bool=True, sep:str=",") -> Optional[Sequence[str]]:
|
|
s = self.getString(module, name, useCache=useCache);
|
|
if (s == None or s == ""):
|
|
return None
|
|
|
|
return s.split(sep);
|