YARP
Yet Another Robot Platform
MonitorLua.h
Go to the documentation of this file.
1 /*
2  * SPDX-FileCopyrightText: 2006-2021 Istituto Italiano di Tecnologia (IIT)
3  * SPDX-License-Identifier: BSD-3-Clause
4  */
5 
6 #ifndef MONITORLUA_INC
7 #define MONITORLUA_INC
8 
9 #include <string>
10 #include <string>
11 #include <yarp/os/PeriodicThread.h>
12 #include "MonitorBinding.h"
13 #include "swigluarun.h"
14 #include <mutex>
15 
16 class MonitorTrigger;
17 
18 class MonitorLua : public MonitorBinding
19 {
20 
21 public:
22  MonitorLua();
23  ~MonitorLua() override;
24 
25  bool load(const yarp::os::Property& options) override;
26  bool setParams(const yarp::os::Property& params) override;
27  bool getParams(yarp::os::Property& params) override;
28 
29  bool acceptData(yarp::os::Things& thing) override;
32 
33  bool peerTrigged() override;
34  bool canAccept() override;
35 
36  bool setAcceptConstraint(const char* constraint) override {
37  if(!constraint) {
38  return false;
39  }
40  MonitorLua::constraint = constraint;
41  trimString(MonitorLua::constraint);
42  return true;
43  }
44 
45  const char* getAcceptConstraint() override {
46  return constraint.c_str();
47  }
48 
49  bool hasAccept() override {
50  return bHasAcceptCallback;
51  }
52 
53  bool hasUpdate() override {
54  return bHasUpdateCallback;
55  }
56 
57  bool hasUpdateReply() override {
58  return bHasUpdateReplyCallback;
59  }
60 
61 private:
62  lua_State *L;
63  std::string constraint;
64  bool bHasAcceptCallback;
65  bool bHasUpdateCallback;
66  bool bHasUpdateReplyCallback;
67  std::recursive_mutex luaMutex;
68 
69 public:
71 
72 private:
73  bool getLocalFunction(const char *name);
74  bool registerExtraFunctions();
75  void trimString(std::string& str);
76  void searchReplace(std::string& str,
77  const std::string& oldStr, const std::string& newStr);
78  bool isKeyword(const char* str);
79 
80  /* lua accessible function*/
81  static int setConstraint(lua_State* L);
82  static int getConstraint(lua_State* L);
83  static int setEvent(lua_State* L);
84  static int unsetEvent(lua_State* L);
85  static int setTrigInterval(lua_State* L);
86 #if LUA_VERSION_NUM > 501
87  static const struct luaL_Reg portMonitorLib[];
88 #else
89  static const struct luaL_reg portMonitorLib[];
90 #endif
91 
92 };
93 
95 public:
96  MonitorTrigger(MonitorLua* monitor, double period)
97  : yarp::os::PeriodicThread(period) {
98  MonitorTrigger::monitor = monitor;
99  }
100  virtual ~MonitorTrigger() { }
101 
102  // inherited from the yarp::os::RateThread
103  void run () override {
104  monitor->peerTrigged();
105  }
106 
107 private:
108  MonitorLua* monitor;
109 };
110 
111 
112 #endif //_MONITORLUA_INC_
MonitorTrigger(MonitorLua *monitor, double period)
Definition: MonitorLua.h:96
virtual ~MonitorTrigger()
Definition: MonitorLua.h:100
void run() override
Loop function.
Definition: MonitorLua.h:103
An abstraction for a periodic thread.
PeriodicThread(double period, ShouldUseSystemClock useSystemClock=ShouldUseSystemClock::No, PeriodicThreadClock clockAccuracy=PeriodicThreadClock::Relative)
Constructor.
A class for storing options and configuration information.
Definition: Property.h:34
Base class for generic things.
Definition: Things.h:19
The main, catch-all namespace for YARP.
Definition: dirs.h:16
~MonitorLua() override
Definition: MonitorLua.cpp:38
MonitorLua()
Class MonitorLua.
Definition: MonitorLua.cpp:19
bool getParams(yarp::os::Property &params) override
Definition: MonitorLua.cpp:308
bool setParams(const yarp::os::Property &params) override
Definition: MonitorLua.cpp:275
bool canAccept() override
Definition: MonitorLua.cpp:401
bool hasAccept() override
Definition: MonitorLua.h:49
bool hasUpdateReply() override
Definition: MonitorLua.h:57
bool acceptData(yarp::os::Things &thing) override
Definition: MonitorLua.cpp:143
bool hasUpdate() override
Definition: MonitorLua.h:53
yarp::os::Things & updateReply(yarp::os::Things &thing) override
Definition: MonitorLua.cpp:228
bool peerTrigged() override
Definition: MonitorLua.cpp:355
MonitorTrigger * trigger
Definition: MonitorLua.h:70
yarp::os::Things & updateData(yarp::os::Things &thing) override
Definition: MonitorLua.cpp:181
bool setAcceptConstraint(const char *constraint) override
Definition: MonitorLua.h:36
const char * getAcceptConstraint() override
Definition: MonitorLua.h:45
bool load(const yarp::os::Property &options) override
Definition: MonitorLua.cpp:59