Files
2025-09-24 10:53:28 +08:00

105 lines
2.2 KiB
C++

#ifndef __UT_SERVICE_BASE_HPP__
#define __UT_SERVICE_BASE_HPP__
#include <unitree/common/service/base/service_config.hpp>
namespace unitree
{
namespace common
{
class ServiceBase
{
public:
ServiceBase();
virtual ~ServiceBase();
virtual void Parse(const std::string& configFileName);
virtual void Init();
virtual void Register();
virtual void Start();
virtual void Wait();
virtual void Stop();
protected:
/*
* Parse config content
*/
virtual void ParseConfigContent(const std::string& content);
/*
* Get field: ServiceName
*/
const std::string& GetServiceName() const;
/*
* Get field: CpuIds
*/
const std::string& GetCpuIds() const;
/*
* Get top-level field/value
*/
const Any& GetGlobalParameter(const std::string& name) const;
/*
* Get top-level field: Parameter
*/
bool HasParameter(const std::string& name) const;
/*
* Get top-level field: Parameter
*/
const JsonMap& GetParameter() const;
/*
* Get field from top-level field: Parameter
*/
const Any& GetParameter(const std::string& name) const;
/*
* Get field from top-level field: Parameter
*/
template<typename T>
const T& GetParameter(const std::string& name) const
{
return mConfig.GetParameter<T>(name);
}
/*
* Get field from top-level field: Parameter
*/
template<typename T>
T GetNumberParameter(const std::string& name) const
{
return mConfig.GetNumberParameter<T>(name);
}
/*
* Get field from top-level field: Parameter
*/
template<typename T>
T GetParameter(const std::string& name, const T& defValue) const
{
return mConfig.GetParameter<T>(name, defValue);
}
template<typename T>
T GetNumberParameter(const std::string& name, const T& defValue) const
{
return mConfig.GetNumberParameter<T>(name, defValue);
}
private:
ServiceConfig mConfig;
};
typedef std::shared_ptr<ServiceBase> ServicePtr;
}
}
#endif//__UT_SERVICE_BASE_HPP__