IQRF Gateway Daemon
BaseService.h
Go to the documentation of this file.
1 /*
2  * Copyright 2016-2017 MICRORISC s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #pragma once
18 
19 #include "JsonUtils.h"
20 #include "IService.h"
21 #include "ISerializer.h"
22 #include "IMessaging.h"
23 #include "IScheduler.h"
24 #include <string>
25 #include <vector>
26 
27 class IDaemon;
28 
29 typedef std::basic_string<unsigned char> ustring;
30 
31 
48 class BaseService : public IService
49 {
50 public:
51  BaseService() = delete;
52 
55  BaseService(const std::string& name);
56 
57  virtual ~BaseService();
58 
59  // IService override methods
60  void setDaemon(IDaemon* daemon) override;
61  virtual void setSerializer(ISerializer* serializer) override;
62  virtual void setMessaging(IMessaging* messaging) override;
63  const std::string& getName() const override { return m_name; }
64  void update(const rapidjson::Value& cfg) override;
65  void start() override;
66  void stop() override;
67 
68 private:
69  void handleMsgFromMessaging(const ustring& msg);
70  void handleAsyncDpaMessage(const DpaMessage& dpaMessage);
71 
72  std::string m_name;
73  IMessaging* m_messaging;
74  IDaemon* m_daemon;
75  std::vector<ISerializer*> m_serializerVect;
76  bool m_asyncDpaMessage = false;
77 };
virtual void setSerializer(ISerializer *serializer) override
Set ISerializer instance reference.
Definition: BaseService.cpp:42
std::basic_string< unsigned char > ustring
Definition: BaseService.h:27
Provides basic message handling.
Definition: BaseService.h:48
BaseService()=delete
void start() override
Start IService instance.
Definition: BaseService.cpp:62
ISerializer interface.
Definition: ISerializer.h:31
IDaemon interface.
Definition: IDaemon.h:31
virtual ~BaseService()
Definition: BaseService.cpp:33
void update(const rapidjson::Value &cfg) override
Update configuration.
Definition: BaseService.cpp:55
IService interface.
Definition: IService.h:30
IMessaging interface.
Definition: IMessaging.h:29
void stop() override
Stop IService instance.
Definition: BaseService.cpp:83
void setDaemon(IDaemon *daemon) override
Set IDaemon instance reference.
Definition: BaseService.cpp:37
virtual void setMessaging(IMessaging *messaging) override
Set IMessaging instance reference.
Definition: BaseService.cpp:47
std::basic_string< unsigned char > ustring
Definition: ProtocolBridgeClientService.h:33
const std::string & getName() const override
Get name of the instance.
Definition: BaseService.h:63