MediaServerBase.hpp
1 //
2 // Created by xiong on 2023/8/16.
3 //
4 
5 #ifndef EMX_MediaServerGlobalBase_HPP
6 #define EMX_MediaServerGlobalBase_HPP
7 
8 #include "media/common/MediaTypedef.hpp"
9 #include "json/json.h"
10 #include <vector>
11 
12 namespace Emx {
16  class MediaServerModuleBase;
17 
19  public:
20  explicit MediaServerModuleChnBase(MediaModE mod, int32_t chn);
21 
22  virtual ~MediaServerModuleChnBase() = default;
23 
28  virtual ErrCodeE OnServerCreate() { return OnCreate(); }
29 
34  virtual ErrCodeE OnCreate() = 0;
35 
39  virtual void OnServerDestroy() { OnDestroy(); }
40 
44  virtual void OnDestroy() = 0;
45 
46 
51  virtual ErrCodeE OnParamChanged() = 0;
52 
53  virtual ErrCodeE LoadParam() { return ErrCodeE::Success; }
54 
55  virtual ErrCodeE SaveParam() { return ErrCodeE::Success; }
56 
57  virtual ErrCodeE GetParamRange(Json::Value &range);
58 
59  virtual void *GetParam() = 0;
60 
61  virtual void *GetNewParam() = 0;
62 
63  virtual void *GetRunningParam() = 0;
64 
65  virtual int GetParamSize() = 0;
66 
67  virtual ErrCodeE GetParamDefaultData(std::string &data) { return ErrCodeE::Success; }
68 
69  virtual void NewParamInCome(const char *data, int size) { memcpy(GetNewParam(), data, GetParamSize()); }
70 
71  virtual bool ParamValid() { return true; }
72 
73  virtual void GetRunningParamData(std::string &data) { data.assign((const char *) GetRunningParam(), GetParamSize()); }
74 
75  virtual void GetParamData(std::string &data) { data.assign((const char *) GetParam(), GetParamSize()); }
76 
77  virtual bool ParamChanged() { return memcmp(GetRunningParam(), GetNewParam(), GetParamSize()) != 0; }
78 
79  virtual void UpdateParam() { memcpy(GetParam(), GetNewParam(), GetParamSize()); }
80 
81  virtual void UpdateRunningParam() { memcpy(GetRunningParam(), GetNewParam(), GetParamSize()); }
82 
83  virtual void ReleaseNewParam() {}
84 
85  virtual ErrCodeE OnRecvReqChn(uint32_t method, const char *data, int32_t size, std::string &out) {
86  return OnRecvReqChnSpec(method, data, size, out);
87  }
88 
89  virtual ErrCodeE OnRecvReqChnSpec(uint32_t method, const char *data, int32_t size, std::string &out) {
91  }
92 
93  int32_t GetChn() { return m_chn; }
94 
95  protected:
97  int32_t m_chn;
98  };
99 
105  public:
106  MediaServerModuleBase(MediaModE mod, const char *name) : m_mod(mod), m_name(name) {}
107 
111  virtual void Create();
112 
116  virtual void Destroy();
117 
118  virtual ErrCodeE OnRecvReq(uint32_t method, int32_t chn, const char *data, int32_t size, std::string &out);
119 
120  virtual int LoadChnNum();
121 
123  std::string m_name;
124  std::vector<MediaServerModuleChnBase *> m_array;
125  };
126 
128 }// namespace Emx
129 
130 #endif//EMX_MediaServerGlobalBase_HPP
媒体模块的通用基类
Definition: MediaServerBase.hpp:104
std::string m_name
Definition: MediaServerBase.hpp:123
virtual void Create()
模块构造函数,通过配置文件的通道数,创建模块的各个通道
std::vector< MediaServerModuleChnBase * > m_array
Definition: MediaServerBase.hpp:124
MediaModE m_mod
Definition: MediaServerBase.hpp:122
virtual ErrCodeE OnRecvReq(uint32_t method, int32_t chn, const char *data, int32_t size, std::string &out)
MediaServerModuleBase(MediaModE mod, const char *name)
Definition: MediaServerBase.hpp:106
virtual void Destroy()
模块析构函数,销毁各个通道
Definition: MediaServerBase.hpp:18
virtual bool ParamChanged()
Definition: MediaServerBase.hpp:77
virtual ErrCodeE OnRecvReqChn(uint32_t method, const char *data, int32_t size, std::string &out)
Definition: MediaServerBase.hpp:85
virtual ErrCodeE LoadParam()
Definition: MediaServerBase.hpp:53
MediaServerModuleChnBase(MediaModE mod, int32_t chn)
virtual void * GetRunningParam()=0
virtual ErrCodeE GetParamDefaultData(std::string &data)
Definition: MediaServerBase.hpp:67
virtual ErrCodeE SaveParam()
Definition: MediaServerBase.hpp:55
MediaServerModuleBase * m_module
Definition: MediaServerBase.hpp:96
virtual ErrCodeE GetParamRange(Json::Value &range)
virtual void GetParamData(std::string &data)
Definition: MediaServerBase.hpp:75
int32_t GetChn()
Definition: MediaServerBase.hpp:93
virtual void ReleaseNewParam()
Definition: MediaServerBase.hpp:83
virtual ErrCodeE OnCreate()=0
创建模块通道
virtual void UpdateParam()
Definition: MediaServerBase.hpp:79
virtual bool ParamValid()
Definition: MediaServerBase.hpp:71
int32_t m_chn
Definition: MediaServerBase.hpp:97
virtual void * GetParam()=0
virtual void UpdateRunningParam()
Definition: MediaServerBase.hpp:81
virtual void NewParamInCome(const char *data, int size)
Definition: MediaServerBase.hpp:69
virtual ~MediaServerModuleChnBase()=default
virtual void OnServerDestroy()
销毁模块通道
Definition: MediaServerBase.hpp:39
virtual void GetRunningParamData(std::string &data)
Definition: MediaServerBase.hpp:73
virtual void * GetNewParam()=0
virtual ErrCodeE OnServerCreate()
创建模块通道
Definition: MediaServerBase.hpp:28
virtual ErrCodeE OnParamChanged()=0
参数改变
virtual void OnDestroy()=0
销毁模块通道
virtual ErrCodeE OnRecvReqChnSpec(uint32_t method, const char *data, int32_t size, std::string &out)
Definition: MediaServerBase.hpp:89
MediaModE
Definition: MediaTypedef.hpp:60
ErrCodeE
错误码定义
Definition: EmxTypeDef.hpp:29
@ OperationNotSupport
操作不支持
@ Success
成功
Definition: EmxGpio.hpp:10