ifw-core  5.0.0-pre2
iComm.hpp
Go to the documentation of this file.
1 
10 #ifndef CORE_PROTOCOL_BASE_ICOMM_HPP
11 #define CORE_PROTOCOL_BASE_ICOMM_HPP
12 
13 
14 #include <boost/variant.hpp>
15 #include <list>
16 
19 
20 #define REGISTER_COMM(T) static protocol::base::CommMaker<T> maker(#T)
21 
22 namespace protocol {
23  namespace base {
24 
25  // WARNING: the order of the type in the variant shall match
26  // the enumeration below.
27  using Variant = boost::variant<bool,int,unsigned int,short,double,std::string>;
28  enum {
29  TYPE_BOOL = 0,
30  TYPE_INT = 1,
31  TYPE_UINT = 2,
34  TYPE_STRING = 5
35  };
36 
37  using PairVariant = std::pair<std::string, Variant>;
38  using ListVariant = std::list<PairVariant>;
39  using VectorVariant = std::vector<PairVariant>;
40 
41  class IComm
42  {
43  public:
44 
45  virtual void Connect(const std::string& device, const std::string& address) = 0;
46  virtual void Read(VectorVariant& params) = 0;
47  virtual void Write(const VectorVariant& params) = 0;
48  virtual void Rpc(const std::string& obj,
49  const std::string& proc,
50  const VectorVariant& params,
51  Variant& result) = 0;
52  virtual void Disconnect() = 0;
53  virtual void StartMonitorItem(const std::string& item) = 0;
54  virtual void StartMonitorItems(const std::vector<std::string>& item_vector) = 0;
55  virtual void StopMonitorItem(const std::string& item) = 0;
58  protocol::base::Dispatcher<>& normal) = 0;
59  virtual ~IComm() {};
60 
61  };
62  }
63 }
64 
65 #endif //CORE_PROTOCOL_BASE_ICOMM_HPP
Definition: iComm.hpp:42
virtual ~IComm()
Definition: iComm.hpp:59
virtual void StopMonitorItem(const std::string &item)=0
virtual void StartMonitorItem(const std::string &item)=0
virtual void RegisterCB(protocol::base::Dispatcher< protocol::base::VectorVariant & > &dispatcher, protocol::base::Dispatcher<> &failure, protocol::base::Dispatcher<> &normal)=0
virtual void Rpc(const std::string &obj, const std::string &proc, const VectorVariant &params, Variant &result)=0
virtual void Connect(const std::string &device, const std::string &address)=0
virtual void StartMonitorItems(const std::vector< std::string > &item_vector)=0
virtual void Write(const VectorVariant &params)=0
virtual void Disconnect()=0
virtual void Read(VectorVariant &params)=0
std::vector< PairVariant > VectorVariant
Definition: iComm.hpp:39
std::pair< std::string, Variant > PairVariant
Definition: iComm.hpp:37
boost::variant< bool, int, unsigned int, short, double, std::string > Variant
Definition: iComm.hpp:27
@ TYPE_BOOL
Definition: iComm.hpp:29
@ TYPE_STRING
Definition: iComm.hpp:34
@ TYPE_SHORT
Definition: iComm.hpp:32
@ TYPE_INT
Definition: iComm.hpp:30
@ TYPE_DOUBLE
Definition: iComm.hpp:33
@ TYPE_UINT
Definition: iComm.hpp:31
std::list< PairVariant > ListVariant
Definition: iComm.hpp:38
Definition: commFactory.cpp:15