Coverage Report

Overview

Source coverage:85%
Total line count:24021
Total valid lines:13067
Total visited lines:11119

Files

lua\openrtm\version.lua
100%
lua\openrtm\Task.lua
100%
lua\openrtm\StateMachine.lua
100%
lua\openrtm\SdoServiceConsumerBase.lua
100%
lua\openrtm\OpenHRPExecutionContext.lua
100%
lua\openrtm\ManagerActionListener.lua
100%
lua\openrtm\LogstreamBase.lua
100%
lua\openrtm\FactoryInit.lua
100%
lua\openrtm\DefaultConfiguration.lua
100%
lua\openrtm\DataPortStatus.lua
100%
lua\openrtm\ConnectorBase.lua
100%
lua\openrtm\CdrRingBuffer.lua
100%
lua\openrtm\BufferStatus.lua
100%
lua\openrtm\PeriodicExecutionContext.lua
98%
lua\openrtm\InPortProvider.lua
98%
lua\openrtm\PortAdmin.lua
97%
lua\openrtm\OutPortConnector.lua
97%
lua\openrtm\NumberingPolicy.lua
97%
lua\openrtm\NamingServiceNumberingPolicy.lua
97%
lua\openrtm\TimeValue.lua
96%
lua\openrtm\ListenerHolder.lua
96%
lua\openrtm\ECFactory.lua
96%
lua\openrtm\CORBA_SeqUtil.lua
96%
lua\openrtm\SystemLogger.lua
95%
lua\openrtm\LogstreamFile.lua
95%
lua\openrtm\InPortConnector.lua
95%
lua\openrtm\ComponentActionListener.lua
95%
lua\openrtm\OutPortProvider.lua
94%
lua\openrtm\OutPortDSProvider.lua
94%
lua\openrtm\GlobalFactory.lua
94%
lua\openrtm\SdoServiceProviderBase.lua
93%
lua\openrtm\OutPortPushConnector.lua
93%
lua\openrtm\OutPortPullConnector.lua
93%
lua\openrtm\InPortDSProvider.lua
93%
lua\openrtm\CORBA_RTCUtil.lua
93%
lua\openrtm\ConnectorListener.lua
93%
lua\openrtm\PortConnectListener.lua
92%
lua\openrtm\OutPort.lua
92%
lua\openrtm\Factory.lua
91%
lua\openrtm\CorbaPort.lua
91%
lua\openrtm\SimulatorExecutionContext.lua
90%
lua\openrtm\RingBuffer.lua
90%
lua\openrtm\ModuleManager.lua
90%
lua\openrtm\InPortDirectConsumer.lua
90%
lua\openrtm\InPort.lua
90%
lua\openrtm\PeriodicECSharedComposite.lua
89%
lua\openrtm\StringUtil.lua
88%
lua\openrtm\SdoOrganization.lua
88%
lua\openrtm\InPortPullConnector.lua
88%
lua\openrtm\ExecutionContextProfile.lua
88%
lua\openrtm\ConfigAdmin.lua
87%
lua\openrtm\RTObject.lua
86%
lua\openrtm\Properties.lua
86%
lua\openrtm\ExecutionContextWorker.lua
86%
lua\openrtm\CorbaNaming.lua
86%
lua\openrtm\RTObjectStateMachine.lua
85%
lua\openrtm\PortBase.lua
85%
lua\openrtm\RTCUtil.lua
84%
lua\openrtm\OutPortBase.lua
84%
lua\openrtm\ObjectManager.lua
84%
lua\openrtm\CorbaConsumer.lua
84%
lua\openrtm\ManagerInfo.lua
83%
lua\openrtm\ManagerConfig.lua
83%
lua\openrtm\ExecutionContextBase.lua
82%
lua\openrtm\NamingManager.lua
80%
lua\openrtm\InPortPushConnector.lua
80%
lua\openrtm\PublisherFlush.lua
79%
lua\openrtm\NVUtil.lua
79%
lua\openrtm\InPortDSConsumer.lua
79%
lua\openrtm\InPortBase.lua
79%
lua\openrtm\PublisherBase.lua
78%
lua\openrtm\CdrBufferBase.lua
78%
lua\openrtm\OutPortDirectProvider.lua
77%
lua\openrtm\OutPortDirectConsumer.lua
76%
lua\openrtm\ConfigurationListener.lua
76%
lua\openrtm\OutPortDSConsumer.lua
75%
lua\openrtm\Manager.lua
75%
lua\openrtm\InPortDirectProvider.lua
72%
lua\openrtm\Timer.lua
70%
lua\openrtm\SdoServiceAdmin.lua
70%
lua\openrtm\BufferBase.lua
70%
lua\openrtm\SdoConfiguration.lua
69%
lua\openrtm\PortCallBack.lua
68%
lua\openrtm\ManagerServant.lua
68%
lua\openrtm\NumberingPolicyBase.lua
62%
lua\openrtm\OutPortConsumer.lua
60%
lua\openrtm\NodeNumberingPolicy.lua
60%
lua\openrtm\InPortConsumer.lua
60%

File lua\openrtm\BufferBase.lua

1 ---------------------------------
2 --! @file BufferBase.lua
3 --! @brief バッファの基底クラス定義
4 --! バッファはBufferBaseテーブルをメタテーブルに設定して作成する
5 ---------------------------------
6
7 --[[
8 Copyright (c) 2017 Nobuhiko Miyamoto
9 ]]
10
11 local BufferBase = {}
12 --_G["openrtm.BufferBase"] = BufferBase
13
14 local BufferStatus = require "openrtm.BufferStatus"
15
16 -- バッファ初期化
17 -- @return バッファオブジェクト
18 BufferBase.new = function()
19     local obj = {}
20     -- 初期化時にプロパティ設定
21     -- @param prop プロパティ
22     function obj:init(prop)
23     end
24     -- バッファ長設定
25     -- @param n バッファ長
26     -- @return バッファステータス(nがnilの場合は長さ)
27     function obj:length(n)
28         if n == nil then
29             return 0
30         end
31         return BufferStatus.BUFFER_OK
32     end
33     -- バッファポインタをリセット
34     function obj:reset()
35     end
36     -- 指定位置まで書き込みポインタを進めた場合のバッファ取得
37     -- @param n ポインタの位置
38     -- @return 現在の位置のバッファ
39     function obj:wptr(n)
40     end
41     -- 書き込みポインタの位置を進める
42     -- @param n ポインタの位置
43     -- @return バッファステータス
44     function obj:advanceWptr(n)
45         return BufferStatus.BUFFER_OK
46     end
47     -- データ書き込み
48     -- @param value データ
49     -- @return バッファステータス
50     function obj:put(data)
51         return BufferStatus.BUFFER_OK
52     end
53     -- データ書き込み
54     -- @param value データ
55     -- @param sec タイムアウト時間[s]
56     -- @param nsec タイムアウト時間[ns]
57     -- @return バッファステータス
58     function obj:write(value, sec, nsec)
59         return BufferStatus.BUFFER_OK
60     end
61     -- 書き込み可能なバッファ残り長さ
62     -- @return 長さ
63     function obj:writable()
64         return 0
65     end
66     -- バッファフルの判定
67     -- @return true:バッファフル
68     function obj:full()
69         return true
70     end
71     
72     -- 指定位置まで読み込みポインタを進めた場合のバッファ取得
73     -- @param n ポインタの位置
74     -- @return 現在の位置のバッファ
75     function obj:rptr(n)
76     end
77     -- 読み込みポインタの位置を進める
78     -- @param n ポインタの位置
79     -- @return バッファステータス
80     -- BUFFER_OK:正常に位置設定、PRECONDITION_NOT_MET:位置が不正
81     function obj:advanceRptr(n)
82         return BufferStatus.BUFFER_OK
83     end
84     -- データ読み込み
85     -- @param value value._dataにデータ格納
86     -- @return バッファステータス(valueがnilの場合はバッファの値を返す)
87     function obj:get(value)
88         return BufferStatus.BUFFER_OK
89     end
90     -- データ読み込み
91     -- @param value value._dataにデータ格納
92     -- @param sec タイムアウト時間[s]、デフォルトは-1
93     -- @param nsec タイムアウト時間[ns]、デフォルトは0
94     -- @return バッファステータス
95     -- BUFFER_OK:正常にデータ読み込み、BUFFER_EMPTY:バッファが空
96     function obj:read(value, sec, nsec)
97         return BufferStatus.BUFFER_OK
98     end
99     -- 読み込み可能なデータ長さ取得
100     -- @return データ長さ
101     function obj:readable()
102         return 0
103     end
104     -- バッファが空かの判定
105     -- @return true:空
106     function obj:empty()
107         return true
108     end
109     return obj
110 end
111
112 BufferBase.NullBuffer = {}
113
114 -- 空のバッファ初期化
115 -- @return バッファオブジェクト
116 BufferBase.NullBuffer.new = function(size)
117     local obj = {}
118     setmetatable(obj, {__index=BufferBase.new()})
119     return obj
120 end
121
122
123
124 return BufferBase

File lua\openrtm\BufferStatus.lua

Full coverage

File lua\openrtm\CdrBufferBase.lua

1 ---------------------------------
2 --! @file CdrBufferBase.lua
3 --! @brief リングバッファ基底クラス定義
4 --! バッファ生成ファクトリはCdrBufferFactoryに登録する
5 ---------------------------------
6
7 --[[
8 Copyright (c) 2017 Nobuhiko Miyamoto
9 ]]
10
11 local CdrBufferBase= {}
12 --_G["openrtm.CdrBufferBase"] = CdrBufferBase
13
14 local GlobalFactory = require "openrtm.GlobalFactory"
15 local Factory = GlobalFactory.Factory
16 local BufferBase = require "openrtm.BufferBase"
17
18
19 -- リングバッファ初期化
20 -- @return バッファオブジェクト
21 CdrBufferBase.new = function()
22     local obj = {}
23     setmetatable(obj, {__index=BufferBase.new()})
24     return obj
25 end
26
27
28 CdrBufferBase.CdrBufferFactory = {}
29 setmetatable(CdrBufferBase.CdrBufferFactory, {__index=Factory.new()})
30
31 function CdrBufferBase.CdrBufferFactory:instance()
32     return self
33 end
34
35
36 return CdrBufferBase

File lua\openrtm\CdrRingBuffer.lua

Full coverage

File lua\openrtm\ComponentActionListener.lua

1 ---------------------------------
2 --! @file ComponentActionListener.lua
3 --! @brief コンポーネントコールバック定義クラス
4 ---------------------------------
5
6 --[[
7 Copyright (c) 2017 Nobuhiko Miyamoto
8 ]]
9
10 local ComponentActionListener= {}
11 --_G["openrtm.ComponentActionListener"] = ComponentActionListener
12
13
14 ComponentActionListener.PreComponentActionListenerType = {
15     PRE_ON_INITIALIZE                 = 1,
16     PRE_ON_FINALIZE                   = 2,
17     PRE_ON_STARTUP                    = 3,
18     PRE_ON_SHUTDOWN                   = 4,
19     PRE_ON_ACTIVATED                  = 5,
20     PRE_ON_DEACTIVATED                = 6,
21     PRE_ON_ABORTING                   = 7,
22     PRE_ON_ERROR                      = 8,
23     PRE_ON_RESET                      = 9,
24     PRE_ON_EXECUTE                    = 10,
25     PRE_ON_STATE_UPDATE               = 11,
26     PRE_ON_RATE_CHANGED               = 12,
27     PRE_COMPONENT_ACTION_LISTENER_NUM = 13
28 }
29
30 ComponentActionListener.PreComponentActionListener = {}
31
32
33
34
35 ComponentActionListener.PreComponentActionListener.toString = function(_type)
36     local typeString = {"PRE_ON_INITIALIZE",
37                         "PRE_ON_FINALIZE",
38                         "PRE_ON_STARTUP",
39                         "PRE_ON_SHUTDOWN",
40                         "PRE_ON_ACTIVATED",
41                         "PRE_ON_DEACTIVATED",
42                         "PRE_ON_ABORTING",
43                         "PRE_ON_ERROR",
44                         "PRE_ON_RESET",
45                         "PRE_ON_EXECUTE",
46                         "PRE_ON_STATE_UPDATE",
47                         "PRE_ON_RATE_CHANGED",
48                         "PRE_COMPONENT_ACTION_LISTENER_NUM"}
49
50     if _type < ComponentActionListener.PreComponentActionListenerType.PRE_COMPONENT_ACTION_LISTENER_NUM then
51         return typeString[_type]
52     end
53     return ""
54 end
55
56
57 ComponentActionListener.PreComponentActionListener.new = function()
58     local obj = {}
59     function obj:call(ec_id)
60         
61     end
62     local call_func = function(self, ec_id)
63         self:call(ec_id)
64     end
65     setmetatable(obj, {__call=call_func})
66     return obj
67 end
68
69
70
71
72
73 ComponentActionListener.PostComponentActionListenerType = {
74     POST_ON_INITIALIZE                 = 1,
75     POST_ON_FINALIZE                   = 2,
76     POST_ON_STARTUP                    = 3,
77     POST_ON_SHUTDOWN                   = 4,
78     POST_ON_ACTIVATED                  = 5,
79     POST_ON_DEACTIVATED                = 6,
80     POST_ON_ABORTING                   = 7,
81     POST_ON_ERROR                      = 8,
82     POST_ON_RESET                      = 9,
83     POST_ON_EXECUTE                    = 10,
84     POST_ON_STATE_UPDATE               = 11,
85     POST_ON_RATE_CHANGED               = 12,
86     POST_COMPONENT_ACTION_LISTENER_NUM = 13
87 }
88
89
90 ComponentActionListener.PostComponentActionListener = {}
91
92
93
94
95 ComponentActionListener.PostComponentActionListener.toString = function(_type)
96     local typeString = {"POST_ON_INITIALIZE",
97                         "POST_ON_FINALIZE",
98                         "POST_ON_STARTUP",
99                         "POST_ON_SHUTDOWN",
100                         "POST_ON_ACTIVATED",
101                         "POST_ON_DEACTIVATED",
102                         "POST_ON_ABORTING",
103                         "POST_ON_ERROR",
104                         "POST_ON_RESET",
105                         "POST_ON_EXECUTE",
106                         "POST_ON_STATE_UPDATE",
107                         "POST_ON_RATE_CHANGED",
108                         "POST_COMPONENT_ACTION_LISTENER_NUM"}
109
110     if _type < ComponentActionListener.PostComponentActionListenerType.POST_COMPONENT_ACTION_LISTENER_NUM then
111         return typeString[_type]
112     end
113     return ""
114 end
115
116
117 ComponentActionListener.PostComponentActionListener.new = function()
118     local obj = {}
119     function obj:call(ec_id, ret)
120         
121     end
122     local call_func = function(self, ec_id, ret)
123         self:call(ec_id, ret)
124     end
125     setmetatable(obj, {__call=call_func})
126     return obj
127 end
128
129
130
131 ComponentActionListener.PortActionListenerType = {
132     ADD_PORT                 = 1,
133     REMOVE_PORT              = 2,
134     PORT_ACTION_LISTENER_NUM = 3
135 }
136
137 ComponentActionListener.PortActionListener = {}
138
139
140
141
142 ComponentActionListener.PortActionListener.toString = function(_type)
143     local typeString = {"ADD_PORT",
144                         "REMOVE_PORT",
145                         "PORT_ACTION_LISTENER_NUM"}
146
147     if _type < ComponentActionListener.PortActionListenerType.PORT_ACTION_LISTENER_NUM then
148         return typeString[_type]
149     end
150     return ""
151 end
152
153
154 ComponentActionListener.PortActionListener.new = function()
155     local obj = {}
156     function obj:call(pprof)
157         
158     end
159     local call_func = function(self, pprof)
160         self:call(pprof)
161     end
162     setmetatable(obj, {__call=call_func})
163     return obj
164 end
165
166
167
168 ComponentActionListener.ExecutionContextActionListenerType = {
169     EC_ATTACHED            = 1,
170     EC_DETACHED            = 2,
171     EC_ACTION_LISTENER_NUM = 3
172 }
173
174 ComponentActionListener.ExecutionContextActionListener = {}
175
176
177
178
179 ComponentActionListener.ExecutionContextActionListener.toString = function(_type)
180     local typeString = {"EC_ATTACHED",
181                         "EC_DETACHED",
182                         "EC_ACTION_LISTENER_NUM"}
183
184     if _type < ComponentActionListener.ExecutionContextActionListenerType.EC_ACTION_LISTENER_NUM then
185         return typeString[_type]
186     end
187     return ""
188 end
189
190
191 ComponentActionListener.ExecutionContextActionListener.new = function()
192     local obj = {}
193     function obj:call(ec_id)
194         
195     end
196     local call_func = function(self, ec_id)
197         self:call(ec_id)
198     end
199     setmetatable(obj, {__call=call_func})
200     return obj
201 end
202
203
204 local Entry = {}
205 Entry.new = function(listener, autoclean)
206     local obj = {}
207     obj.listener  = listener
208     obj.autoclean = autoclean
209     return obj
210 end
211
212 ComponentActionListener.PreComponentActionListenerHolder = {}
213 ComponentActionListener.PreComponentActionListenerHolder.new = function()
214     local obj = {}
215     obj._listeners = {}
216     function obj:addListener(listener, autoclean)
217         table.insert(self._listeners, Entry.new(listener, autoclean))
218     end
219     function obj:removeListener(listener)
220         for i,_listener in ipairs(self._listeners) do
221             if _listener.listener == listener then
222                 if _listener.autoclean then
223                     table.remove(self._listeners, i)
224                 end
225             end
226         end
227     end
228     function obj:notify(ec_id)
229         for i, listener in ipairs(self._listeners) do
230             listener.listener:call(ec_id)
231         end
232     end
233     return obj
234 end
235
236
237 ComponentActionListener.PostComponentActionListenerHolder = {}
238 ComponentActionListener.PostComponentActionListenerHolder.new = function()
239     local obj = {}
240     obj._listeners = {}
241     function obj:addListener(listener, autoclean)
242         table.insert(self._listeners, Entry.new(listener, autoclean))
243     end
244     function obj:removeListener(listener)
245         for i,_listener in ipairs(self._listeners) do
246             if _listener.listener == listener then
247                 if _listener.autoclean then
248                     table.remove(self._listeners, i)
249                 end
250             end
251         end
252     end
253     function obj:notify(ec_id, ret)
254         for i, listener in ipairs(self._listeners) do
255             listener.listener:call(ec_id, ret)
256         end
257     end
258     return obj
259 end
260
261 ComponentActionListener.PortActionListenerHolder = {}
262 ComponentActionListener.PortActionListenerHolder.new = function()
263     local obj = {}
264     obj._listeners = {}
265     function obj:addListener(listener, autoclean)
266         table.insert(self._listeners, Entry.new(listener, autoclean))
267     end
268     function obj:removeListener(listener)
269         for i,_listener in ipairs(self._listeners) do
270             if _listener.listener == listener then
271                 if _listener.autoclean then
272                     table.remove(self._listeners, i)
273                 end
274             end
275         end
276     end
277     function obj:notify(pprofile)
278         for i, listener in ipairs(self._listeners) do
279             listener.listener:call(pprofile)
280         end
281     end
282     return obj
283 end
284
285
286
287 ComponentActionListener.ExecutionContextActionListenerHolder = {}
288 ComponentActionListener.ExecutionContextActionListenerHolder.new = function()
289     local obj = {}
290     obj._listeners = {}
291     function obj:addListener(listener, autoclean)
292         table.insert(self._listeners, Entry.new(listener, autoclean))
293     end
294     function obj:removeListener(listener)
295         for i,_listener in ipairs(self._listeners) do
296             if _listener.listener == listener then
297                 if _listener.autoclean then
298                     table.remove(self._listeners, i)
299                 end
300             end
301         end
302     end
303     function obj:notify(ec_id)
304         for i, listener in ipairs(self._listeners) do
305             listener.listener:call(ec_id)
306         end
307     end
308     return obj
309 end
310
311 ComponentActionListener.ComponentActionListeners = {}
312 ComponentActionListener.ComponentActionListeners.new = function()
313     local obj = {}
314     obj.preaction_num = ComponentActionListener.PreComponentActionListenerType.PRE_COMPONENT_ACTION_LISTENER_NUM
315     obj.preaction_ = {}
316     for i = 1,obj.preaction_num do
317         table.insert(obj.preaction_, ComponentActionListener.PreComponentActionListenerHolder.new())
318     end
319
320     obj.postaction_num = ComponentActionListener.PostComponentActionListenerType.POST_COMPONENT_ACTION_LISTENER_NUM
321     obj.postaction_ = {}
322     for i = 1,obj.postaction_num do
323         table.insert(obj.postaction_, ComponentActionListener.PostComponentActionListenerHolder.new())
324     end
325
326     obj.portaction_num = ComponentActionListener.PortActionListenerType.PORT_ACTION_LISTENER_NUM
327     obj.portaction_ = {}
328     for i = 1,obj.portaction_num do
329         table.insert(obj.portaction_, ComponentActionListener.PortActionListenerHolder.new())
330     end
331
332     obj.ecaction_num = ComponentActionListener.ExecutionContextActionListenerType.EC_ACTION_LISTENER_NUM
333     obj.ecaction_ = {}
334     for i = 1,obj.ecaction_num do
335         table.insert(obj.ecaction_, ComponentActionListener.ExecutionContextActionListenerHolder.new())
336     end
337     
338     return obj
339 end
340
341
342 return ComponentActionListener

File lua\openrtm\ConfigAdmin.lua

1 ---------------------------------
2 --! @file ConfigAdmin.lua
3 --! @brief コンフィギュレーション管理クラス定義
4 ---------------------------------
5
6 --[[
7 Copyright (c) 2017 Nobuhiko Miyamoto
8 ]]
9
10 local ConfigAdmin= {}
11 --_G["openrtm.ConfigAdmin"] = ConfigAdmin
12
13 local Properties = require "openrtm.Properties"
14 local ConfigurationListener = require "openrtm.ConfigurationListener"
15 local ConfigurationListeners = ConfigurationListener.ConfigurationListeners
16 local StringUtil = require "openrtm.StringUtil"
17
18 local ConfigurationParamListenerType = ConfigurationListener.ConfigurationParamListenerType
19 local ConfigurationSetListenerType = ConfigurationListener.ConfigurationSetListenerType
20 local ConfigurationSetNameListenerType = ConfigurationListener.ConfigurationSetNameListenerType
21
22
23 local Config = {}
24 -- コンフィギュレーションパラメータ管理オブジェクト初期化
25 -- 変換関数には以下の関数を使用する
26 -- ret, value = trans(type, str)
27 -- @param name 名前
28 -- @param var 変数
29 -- @param def_val デフォルト値
30 -- @param trans 変換関数
31 -- @return コンフィギュレーションパラメータ管理オブジェクト
32 Config.new = function(name, var, def_val, trans)
33     local obj = {}
34     obj.name = name
35     obj.default_value = def_val
36     obj.string_value = ""
37     obj.callback = nil
38     obj._var = var
39     if trans ~= nil then
40         obj._trans = trans
41     else
42         obj._trans = StringUtil.stringTo
43     end
44     -- コールバック関数設定
45     -- @param cbf コールバック関数
46     function obj:setCallback(cbf)
47         self.callback = cbf
48     end
49     -- パラメータ更新の通知
50     -- @param key キー
51     -- @param val 値
52     function obj:notifyUpdate(key, val)
53         self.callback(key, val)
54     end
55     -- パラメータの更新
56     -- @param key 値
57     -- @return true:更新成功・更新済み、false:更新失敗
58     -- 変換関数がfalseを返した場合は更新失敗
59     function obj:update(val)
60         if self.string_value == val then
61             return true
62         end
63         
64         self.string_value = val
65
66
67         local ret, value = self._trans(self._var._value, val)
68         if ret then
69             self._var._value = value
70             self:notifyUpdate(self.name, val)
71             return true
72         end
73         local ret, value = self._trans(self._var._value, self.default_value)
74         self._var._value = value
75         self:notifyUpdate(self.name, val)
76         return false
77     end
78
79
80     return obj
81 end
82
83 -- コンフィギュレーション管理オブジェクト初期化
84 -- @return コンフィギュレーション管理オブジェクト
85 ConfigAdmin.new = function(configsets)
86     local obj = {}
87     obj._configsets = configsets
88     obj._activeId   = "default"
89     obj._active     = true
90     obj._changed    = false
91     obj._params     = {}
92     obj._emptyconf  = Properties.new()
93     obj._newConfig  = {}
94     obj._listeners  = ConfigurationListeners.new()
95     obj._changedParam = {}
96
97     -- 変数をコンフィギュレーションパラメータ設定に割り当てる
98     -- @param param_name パラメータ名
99     -- @param var 変数
100     -- @param def_val デフォルト値
101     -- @param trans 変換関数(デフォルトはstringTo関数)
102     -- @return true:バインド成功、false:バインド失敗
103     function obj:bindParameter(param_name, var, def_val, trans)
104         if trans == nil then
105             trans = StringUtil.stringTo
106         end
107
108         if param_name == "" or def_val == "" then
109             return false
110         end
111
112         --print(self:isExist(param_name))
113         if self:isExist(param_name) then
114             return false
115         end
116         
117         local ret, value = trans(var._value, def_val)
118         --if type(value) == "table" then
119         -- print(#value)
120         --end
121         var._value = value
122         if not ret then
123             return false
124         end
125         local conf_ = Config.new(param_name, var, def_val, trans)
126         table.insert(self._params, conf_)
127         --print(#self._params)
128         conf_:setCallback(function(config_param, config_value)self:onUpdateParam(config_param, config_value) end)
129         --print(self:getActiveId())
130         self:update(self:getActiveId(), param_name)
131
132         return true
133     end
134
135     -- パラメータ削除
136     -- @param param_name パラメータ名
137     -- @return true:削除成功、false:削除失敗
138     function obj:unbindParameter(param_name)
139         local ret_param = nil
140         local ret_index = -1
141         for find_idx, param in ipairs(self._params) do
142             if param.name == param_name then
143                 ret_param = param
144                 ret_index = find_idx
145             end
146         end
147
148         if ret_index == -1 then
149             return false
150         end
151
152         table.remove(self._params, ret_index)
153
154
155         local leaf = self._configsets:getLeaf()
156         for i, v in ipairs(leaf) do
157             if v:hasKey(param_name) then
158                 v:removeNode(param_name)
159             end
160         end
161
162         return true
163     end
164
165     -- コンフィギュレーションセットの存在確認
166     -- @param config_id コンフィギュレーションセットID
167     -- @return true:存在する、false:存在する
168     function obj:haveConfig(config_id)
169         if self._configsets:hasKey(config_id) == nil then
170             return false
171         else
172             return true
173         end
174     end
175     -- コンフィギュレーションセットのアクティブ化
176     -- "_"から始まるIDは指定できない
177     -- @param config_id コンフィギュレーションセットID
178     -- @return true:アクティブ化成功、false:アクティブ化失敗
179     function obj:activateConfigurationSet(config_id)
180         if config_id == "" then
181             return false
182         end
183         if string.sub(config_id,1,1) == '_' then
184             return false
185         end
186         if not self._configsets:hasKey(config_id) then
187             return false
188         end
189         self._activeId = config_id
190         self._active   = true
191         self._changed  = true
192         self:onActivateSet(config_id)
193         return true
194     end
195     -- コンフィギュレーションセットアクティブ化時のコールバック呼び出し
196     -- @param config_id コンフィギュレーションセットID
197     function obj:onActivateSet(config_id)
198         self._listeners.configsetname_[ConfigurationSetNameListenerType.ON_ACTIVATE_CONFIG_SET]:notify(config_id)
199     end
200     -- コンフィギュレーションパラメータ更新
201     -- ID指定の場合は、指定IDのコンフィギュレーションセットの更新
202     -- パラメータ、ID指定の場合は、指定パラメータの更新
203     -- パラメータ、ID未指定の場合は、現在アクティブなコンフィギュレーションセット更新
204     -- @param config_set コンフィギュレーションセットID
205     -- @param config_param パラメータ名
206     function obj:update(config_set, config_param)
207
208         if config_set ~= nil and config_param == nil then
209             if self._configsets:hasKey(config_set) == false then
210                 return
211             end
212             self._changedParam = {}
213             local prop = self._configsets:getNode(config_set)
214             for i, param in ipairs(self._params) do
215                 if prop:hasKey(param.name) then
216                     --print(type(param.name))
217                     --print(prop:getProperty(param.name))
218                     param:update(prop:getProperty(param.name))
219                 end
220             end
221             self:onUpdate(config_set)
222         end
223
224
225         if config_set ~= nil and config_param ~= nil then
226             self._changedParam = {}
227             local key = config_set
228             key = key.."."..config_param
229             for i, conf in ipairs(self._params) do
230                 --print(conf.name, config_param)
231                 if conf.name == config_param then
232                     --print(self._configsets:getProperty(key))
233                     conf:update(self._configsets:getProperty(key))
234                 end
235             end
236         end
237
238         if config_set == nil and config_param == nil then
239             self._changedParam = {}
240             if self._changed and self._active then
241                 self:update(self._activeId)
242                 self._changed = false
243             end
244         end
245
246     end
247
248     -- パラメータの存在確認
249     -- @param param_name パラメータ名
250     -- @return true:存在する、false:存在しない
251     function obj:isExist(param_name)
252         if #self._params == 0 then
253             return false
254         end
255
256         for i, conf in ipairs(self._params) do
257             if conf.name == param_name then
258                 return true
259             end
260         end
261
262         return false
263     end
264
265     -- コンフィギュレーションパラメータに変更があったかの確認
266     -- @return true:変更あり、false:変更なし
267     function obj:isChanged()
268         return self._changed
269     end
270
271     -- 変更のあったコンフィギュレーションパラメータを取得
272     -- 更新したコンフィギュレーションパラメータは
273     -- @return 変更のあったコンフィギュレーションパラメータ一覧
274     function obj:changedParameters()
275         return self._changedParam
276     end
277
278     -- アクティブなコンフィギュレーションセットID取得
279     -- @return アクティブなコンフィギュレーションセットID
280     function obj:getActiveId()
281         return self._activeId
282     end
283
284
285
286
287     -- コンフィギュレーション管理オブジェクトがアクティブかを確認
288     -- return true:アクティブ、false:非アクティブ
289     function obj:isActive()
290         return self._active
291     end
292
293     -- コンフィギュレーションセット一覧取得
294     -- return コンフィギュレーションセット一覧
295     function obj:getConfigurationSets()
296         return self._configsets:getLeaf()
297     end
298
299     -- コンフィギュレーションセット取得
300     -- @param config_id コンフィギュレーションセットID
301     -- @return コンフィギュレーションセット
302     function obj:getConfigurationSet(config_id)
303
304         local prop = self._configsets:findNode(config_id)
305         if prop == nil then
306             return self._emptyconf
307         end
308         return prop
309     end
310
311     -- コンフィギュレーションセットの設定
312     -- 指定コンフィギュレーションセットがない場合に、新規にノードは生成しない
313     -- @param config_set コンフィギュレーションセット
314     -- @return true:設定成功、false:設定失敗
315     function obj:setConfigurationSetValues(config_set)
316         local node_ = config_set:getName()
317         if node_ == "" or node_ == nil then
318             return false
319         end
320
321         if not self._configsets:hasKey(node_) then
322             return false
323         end
324
325         local p = self._configsets:getNode(node_)
326
327
328         p:mergeProperties(config_set)
329         self._changed = true
330         self._active  = false
331         self:onSetConfigurationSet(config_set)
332         return true
333     end
334
335     -- アクティブなコンフィギュレーションセット取得
336     -- @return アクティブなコンフィギュレーションセット
337     function obj:getActiveConfigurationSet()
338         local p = self._configsets:getNode(self._activeId)
339
340
341         return p
342     end
343
344     -- コンフィギュレーションセット追加
345     -- 指定コンフィギュレーションセットがない場合に、新規にノードを生成する
346     -- @param configset コンフィギュレーションセット
347     -- @return true:追加成功、false:追加失敗
348     function obj:addConfigurationSet(configset)
349         if self._configsets:hasKey(configset:getName()) then
350             return false
351         end
352         local node = configset:getName()
353
354
355         self._configsets:createNode(node)
356
357         local p = self._configsets:getNode(node)
358
359
360         p:mergeProperties(configset)
361         table.insert(self._newConfig, node)
362
363         self._changed = true
364         self._active  = false
365         self:onAddConfigurationSet(configset)
366         return true
367     end
368
369     -- コンフィギュレーションセット削除
370     -- @param config_id コンフィギュレーションセットID
371     -- @return true:削除成功、false:削除失敗
372     function obj:removeConfigurationSet(config_id)
373         if config_id == "default" then
374             return false
375         end
376         if self._activeId == config_id then
377             return false
378         end
379
380         local find_flg = false
381
382         local ret_idx = -1
383         for idx, conf in ipairs(self._newConfig) do
384             if conf == config_id then
385                 ret_idx = idx
386                 break
387             end
388         end
389
390
391         if ret_idx == -1 then
392             return false
393         end
394
395         local p = self._configsets:getNode(config_id)
396         if p ~= nil then
397             p:getRoot():removeNode(config_id)
398         end
399
400         table.remove(self._newConfig, ret_idx)
401
402
403
404         self._changed = true
405         self._active  = false
406         self:onRemoveConfigurationSet(config_id)
407         return true
408     end
409
410
411
412     -- コンフィギュレーション更新時コールバック設定
413     -- @param cb コンフィギュレーションコールバック
414     function obj:setOnUpdate(cb)
415         print("setOnUpdate function is obsolete.")
416         print("Use addConfigurationSetNameListener instead.")
417         self._listeners.configsetname_[ConfigurationSetNameListenerType.ON_UPDATE_CONFIG_SET]:addListener(cb, false)
418     end
419
420     -- コンフィギュレーションパラメータ更新時コールバック設定
421     -- @param cb コンフィギュレーションパラメータコールバック
422     function obj:setOnUpdateParam(cb)
423         print("setOnUpdateParam function is obsolete.")
424         print("Use addConfigurationParamListener instead.")
425         self._listeners.configparam_[ConfigurationParamListenerType.ON_UPDATE_CONFIG_PARAM]:addListener(cb, false)
426     end
427
428     -- コンフィギュレーションセット設定時コールバック設定
429     -- @param cb コンフィギュレーションセット設定時コールバック
430     function obj:setOnSetConfigurationSet(cb)
431         print("setOnSetConfigurationSet function is obsolete.")
432         print("Use addConfigurationSetListener instead.")
433         self._listeners.configset_[ConfigurationSetListenerType.ON_SET_CONFIG_SET]:addListener(cb, false)
434     end
435
436     -- コンフィギュレーションセット追加時コールバック設定
437     -- @param cb コンフィギュレーションセット追加時コールバック
438     function obj:setOnAddConfigurationSet(cb)
439         print("setOnAddConfigurationSet function is obsolete.")
440         print("Use addConfigurationSetListener instead.")
441         self._listeners.configset_[ConfigurationSetListenerType.ON_ADD_CONFIG_SET]:addListener(cb, false)
442     end
443
444     -- コンフィギュレーションセット削除時コールバック設定
445     -- @param cb コンフィギュレーションセット削除時コールバック
446     function obj:setOnRemoveConfigurationSet(cb)
447         print("setOnRemoveConfigurationSet function is obsolete.")
448         print("Use addConfigurationSetNameListener instead.")
449         self._listeners.configsetname_[ConfigurationSetNameListenerType.ON_REMOVE_CONFIG_SET]:addListener(cb, False)
450     end
451
452     -- アクティブなコンフィギュレーションセット設定時コールバック設定
453     -- @param cb アクティブなコンフィギュレーションセット設定時コールバック
454     function obj:setOnActivateSet(cb)
455         print("setOnActivateSet function is obsolete.")
456         print("Use addConfigurationSetNameListener instead.")
457         self._listeners.configsetname_[ConfigurationSetNameListenerType.ON_ACTIVATE_CONFIG_SET]:addListener(cb, false)
458     end
459
460     -- コンフィギュレーションパラメータコールバック設定
461     -- @param _type コールバックの種別
462     -- @param listener コンフィギュレーションパラメータコールバック
463     -- @param autoclean 自動削除フラグ
464     function obj:addConfigurationParamListener(_type, listener, autoclean)
465         if autoclean == nil then
466             autoclean = true
467         end
468         self._listeners.configparam_[_type]:addListener(listener, autoclean)
469     end
470
471     -- コンフィギュレーションパラメータコールバック削除
472     -- @param _type コールバックの種別
473     -- @param listener コンフィギュレーションパラメータコールバック
474     function obj:removeConfigurationParamListener(_type, listener)
475         self._listeners.configparam_[_type]:removeListener(listener)
476     end
477
478     -- コンフィギュレーションセットコールバック設定
479     -- @param _type コールバックの種別
480     -- @param listener コンフィギュレーションセットコールバック
481     -- @param autoclean 自動削除フラグ
482     function obj:addConfigurationSetListener(_type, listener, autoclean)
483         if autoclean == nil then
484             autoclean = true
485         end
486         self._listeners.configset_[_type]:addListener(listener, autoclean)
487     end
488
489     -- コンフィギュレーションセットコールバック削除
490     -- @param _type コールバックの種別
491     -- @param listener コンフィギュレーションセットコールバック
492     function obj:removeConfigurationSetListener(_type, listener)
493         self._listeners.configset_[_type]:removeListener(listener)
494     end
495
496     -- コンフィギュレーションセット名のコールバック設定
497     -- @param _type コールバックの種別
498     -- @param listener コンフィギュレーションセット名のコールバック設定
499     -- @param autoclean 自動削除フラグ
500     function obj:addConfigurationSetNameListener(_type, listener, autoclean)
501         if autoclean == nil then
502             autoclean = true
503         end
504         self._listeners.configsetname_[_type]:addListener(listener, autoclean)
505     end
506
507     -- コンフィギュレーションセット名のコールバック削除
508     -- @param _type コールバックの種別
509     -- @param listener コンフィギュレーションセット名のコールバック
510     function obj:removeConfigurationSetNameListener(_type, listener)
511         self._listeners.configsetname_[_type]:removeListener(listener)
512     end
513
514     -- コンフィギュレーション更新時コールバック呼び出し
515     -- @param config_set コンフィギュレーションセット
516     function obj:onUpdate(config_set)
517         self._listeners.configsetname_[ConfigurationSetNameListenerType.ON_UPDATE_CONFIG_SET]:notify(config_set)
518     end
519
520     -- コンフィギュレーションパラメータ更新時コールバック呼び出し
521     -- @param config_param パラメータ名
522     -- @param config_value 値
523     function obj:onUpdateParam(config_param, config_value)
524         table.insert(self._changedParam, config_param)
525         self._listeners.configparam_[ConfigurationParamListenerType.ON_UPDATE_CONFIG_PARAM]:notify(config_param, config_value)
526     end
527
528     -- コンフィギュレーション設定時コールバック呼び出し
529     -- @param config_set コンフィギュレーションセット
530     function obj:onSetConfigurationSet(config_set)
531         self._listeners.configset_[ConfigurationSetListenerType.ON_SET_CONFIG_SET]:notify(config_set)
532     end
533
534     -- コンフィギュレーション追加時コールバック呼び出し
535     -- @param config_set コンフィギュレーションセット
536     function obj:onAddConfigurationSet(config_set)
537         self._listeners.configset_[ConfigurationSetListenerType.ON_ADD_CONFIG_SET]:notify(config_set)
538     end
539     -- コンフィギュレーション削除時コールバック呼び出し
540     -- @param config_id コンフィギュレーションセットID
541     function obj:onRemoveConfigurationSet(config_id)
542         self._listeners.configsetname_[ConfigurationSetNameListenerType.ON_REMOVE_CONFIG_SET]:notify(config_id)
543     end
544
545     -- コンフィギュレーションアクティブ化時コールバック呼び出し
546     -- @param config_id コンフィギュレーションセットID
547     function obj:onActivateSet(config_id)
548         self._listeners.configsetname_[ConfigurationSetNameListenerType.ON_ACTIVATE_CONFIG_SET]:notify(config_id)
549     end
550
551
552     
553     return obj
554 end
555
556
557 return ConfigAdmin

File lua\openrtm\ConfigurationListener.lua

1 ---------------------------------
2 --! @file ConfigurationListener.lua
3 --! @brief コンフィギュレーションコールバック定義クラス
4 ---------------------------------
5
6 --[[
7 Copyright (c) 2017 Nobuhiko Miyamoto
8 ]]
9
10 local ConfigurationListener= {}
11 --_G["openrtm.ConfigurationListener"] = ConfigurationListener
12
13 ConfigurationListener.ConfigurationParamListenerType = {
14     ON_UPDATE_CONFIG_PARAM      = 1,
15     CONFIG_PARAM_LISTENER_NUM   = 2
16 }
17
18
19 ConfigurationListener.ConfigurationParamListener = {}
20
21
22
23
24 ConfigurationListener.ConfigurationParamListener.toString = function(_type)
25     local typeString = {"ON_UPDATE_CONFIG_PARAM",
26                         "CONFIG_PARAM_LISTENER_NUM"}
27
28     if _type < ConfigurationListener.ConfigurationParamListenerType.CONFIG_PARAM_LISTENER_NUM then
29         return typeString[_type]
30     end
31     return ""
32 end
33
34
35 ConfigurationListener.ConfigurationParamListener.new = function()
36     local obj = {}
37     function obj:call(config_set_name, config_param_name)
38         
39     end
40
41
42     local call_func = function(self, config_set_name, config_param_name)
43         self:call(config_set_name, config_param_name)
44     end
45     setmetatable(obj, {__call=call_func})
46     return obj
47 end
48
49
50
51
52
53 ConfigurationListener.ConfigurationSetListenerType = {
54     ON_SET_CONFIG_SET       = 1,
55     ON_ADD_CONFIG_SET       = 2,
56     CONFIG_SET_LISTENER_NUM = 3
57 }
58
59
60 ConfigurationListener.ConfigurationSetListener = {}
61
62
63
64
65 ConfigurationListener.ConfigurationSetListener.toString = function(_type)
66     local typeString = {"ON_SET_CONFIG_SET",
67                         "ON_ADD_CONFIG_SET",
68                         "CONFIG_SET_LISTENER_NUM"}
69
70     if _type < ConfigurationListener.ConfigurationSetListenerType.CONFIG_SET_LISTENER_NUM then
71         return typeString[_type]
72     end
73     return ""
74 end
75
76
77 ConfigurationListener.ConfigurationSetListener.new = function()
78     local obj = {}
79     function obj:call(config_set)
80         
81     end
82
83
84     local call_func = function(self, config_set)
85         self:call(config_set)
86     end
87     setmetatable(obj, {__call=call_func})
88     return obj
89 end
90
91
92
93
94
95 ConfigurationListener.ConfigurationSetNameListenerType = {
96     ON_UPDATE_CONFIG_SET         = 1,
97     ON_REMOVE_CONFIG_SET         = 2,
98     ON_ACTIVATE_CONFIG_SET       = 3,
99     CONFIG_SET_NAME_LISTENER_NUM = 4
100 }
101
102
103 ConfigurationListener.ConfigurationSetNameListener = {}
104
105
106
107
108 ConfigurationListener.ConfigurationSetNameListener.toString = function(_type)
109     local typeString = {"ON_UPDATE_CONFIG_SET",
110                         "ON_REMOVE_CONFIG_SET",
111                         "ON_ACTIVATE_CONFIG_SET",
112                         "CONFIG_SET_NAME_LISTENER_NUM"}
113
114     if _type < ConfigurationListener.ConfigurationSetNameListenerType.CONFIG_SET_NAME_LISTENER_NUM then
115         return typeString[_type]
116     end
117     return ""
118 end
119
120
121 ConfigurationListener.ConfigurationSetNameListener.new = function()
122     local obj = {}
123     function obj:call(config_set_name)
124         
125     end
126
127
128     local call_func = function(self, config_set_name)
129         self:call(config_set_name)
130     end
131     setmetatable(obj, {__call=call_func})
132     return obj
133 end
134
135
136
137 local Entry = {}
138 Entry.new = function(listener, autoclean)
139     local obj = {}
140     obj.listener  = listener
141     obj.autoclean = autoclean
142     return obj
143 end
144
145
146
147 ConfigurationListener.ConfigurationParamListenerHolder = {}
148 ConfigurationListener.ConfigurationParamListenerHolder.new = function()
149     local obj = {}
150     obj._listeners = {}
151     function obj:addListener(listener, autoclean)
152         table.insert(self._listeners, Entry.new(listener, autoclean))
153     end
154     function obj:removeListener(listener)
155         for i,_listener in ipairs(self._listeners) do
156             if _listener.listener == listener then
157                 if _listener.autoclean then
158                     table.remove(self._listeners, i)
159                 end
160             end
161         end
162     end
163     function obj:notify(config_set_name, config_param_name)
164         for i, listener in ipairs(self._listeners) do
165             listener.listener:call(config_set_name, config_param_name)
166         end
167         
168     end
169     return obj
170 end
171
172
173
174 ConfigurationListener.ConfigurationSetListenerHolder = {}
175 ConfigurationListener.ConfigurationSetListenerHolder.new = function()
176     local obj = {}
177     obj._listeners = {}
178     function obj:addListener(listener, autoclean)
179         table.insert(self._listeners, Entry.new(listener, autoclean))
180     end
181     function obj:removeListener(listener)
182         for i,_listener in ipairs(self._listeners) do
183             if _listener.listener == listener then
184                 if _listener.autoclean then
185                     table.remove(self._listeners, i)
186                 end
187             end
188         end
189     end
190     function obj:notify(config_set)
191         for i, listener in ipairs(self._listeners) do
192             listener.listener:call(config_set)
193         end
194         
195     end
196     
197     return obj
198 end
199
200
201
202
203 ConfigurationListener.ConfigurationSetNameListenerHolder = {}
204 ConfigurationListener.ConfigurationSetNameListenerHolder.new = function()
205     local obj = {}
206     obj._listeners = {}
207     function obj:addListener(listener, autoclean)
208         table.insert(self._listeners, Entry.new(listener, autoclean))
209     end
210     function obj:removeListener(listener)
211         for i,_listener in ipairs(self._listeners) do
212             if _listener.listener == listener then
213                 if _listener.autoclean then
214                     table.remove(self._listeners, i)
215                 end
216             end
217         end
218     end
219     function obj:notify(config_set_name)
220         for i, listener in ipairs(self._listeners) do
221             listener.listener:call(config_set_name)
222         end
223         
224     end
225     
226     return obj
227 end
228
229
230 ConfigurationListener.ConfigurationListeners = {}
231 ConfigurationListener.ConfigurationListeners.new = function()
232     local obj = {}
233     obj.configparam_num = ConfigurationListener.ConfigurationParamListenerType.CONFIG_PARAM_LISTENER_NUM
234     obj.configparam_ = {}
235     for i = 1,obj.configparam_num do
236         table.insert(obj.configparam_, ConfigurationListener.ConfigurationParamListenerHolder.new())
237     end
238     obj.configset_num = ConfigurationListener.ConfigurationSetListenerType.CONFIG_SET_LISTENER_NUM
239     obj.configset_ = {}
240     for i = 1,obj.configset_num do
241         table.insert(obj.configset_, ConfigurationListener.ConfigurationSetListenerHolder.new())
242     end
243     obj.configsetname_num = ConfigurationListener.ConfigurationSetNameListenerType.CONFIG_SET_NAME_LISTENER_NUM
244     obj.configsetname_ = {}
245     for i = 1,obj.configsetname_num do
246         table.insert(obj.configsetname_, ConfigurationListener.ConfigurationSetNameListenerHolder.new())
247     end
248     return obj
249 end
250
251
252 return ConfigurationListener

File lua\openrtm\ConnectorBase.lua

Full coverage

File lua\openrtm\ConnectorListener.lua

1 ---------------------------------
2 --! @file ConnectorListener.lua
3 --! @brief コネクタコールバック定義
4 ---------------------------------
5
6 --[[
7 Copyright (c) 2017 Nobuhiko Miyamoto
8 ]]
9
10 local ConnectorListener= {}
11 --_G["openrtm.ConnectorListener"] = ConnectorListener
12
13
14 ConnectorListener.ConnectorListenerStatus = {
15  NO_CHANGE                 = 1,
16  INFO_CHANGED              = 2,
17  DATA_CHANGED              = 3,
18  BOTH_CHANGED              = 4
19 }
20
21
22 ConnectorListener.ConnectorDataListenerType = {
23  ON_BUFFER_WRITE              = 1,
24  ON_BUFFER_FULL               = 2,
25  ON_BUFFER_WRITE_TIMEOUT      = 3,
26  ON_BUFFER_OVERWRITE          = 4,
27  ON_BUFFER_READ               = 5,
28  ON_SEND                      = 6,
29  ON_RECEIVED                  = 7,
30  ON_RECEIVER_FULL             = 8,
31  ON_RECEIVER_TIMEOUT          = 9,
32  ON_RECEIVER_ERROR            = 10,
33  CONNECTOR_DATA_LISTENER_NUM  = 11
34 }
35
36
37
38 ConnectorListener.ConnectorDataListener = {}
39
40
41
42
43 ConnectorListener.ConnectorDataListener.toString = function(_type)
44  local typeString = {"ON_BUFFER_WRITE",
45       "ON_BUFFER_FULL",
46       "ON_BUFFER_WRITE_TIMEOUT",
47       "ON_BUFFER_OVERWRITE",
48       "ON_BUFFER_READ", 
49       "ON_SEND", 
50       "ON_RECEIVED",
51       "ON_RECEIVER_FULL", 
52       "ON_RECEIVER_TIMEOUT", 
53       "ON_RECEIVER_ERROR",
54       "CONNECTOR_DATA_LISTENER_NUM"}
55
56  if _type < ConnectorListener.ConnectorDataListenerType.CONNECTOR_DATA_LISTENER_NUM then
57   return typeString[_type]
58  end
59  return ""
60 end
61
62
63 ConnectorListener.ConnectorDataListener.new = function()
64  local obj = {}
65  function obj:call(info, data)
66   
67  end
68
69  function obj:__call__(info, cdrdata, dataType)
70   local Manager = require "openrtm.Manager"
71   local _data = Manager:instance():cdrUnmarshal(cdrdata, dataType)
72   return _data
73  end
74
75  local call_func = function(self, info, data)
76   self:call(info, data)
77  end
78  setmetatable(obj, {__call=call_func})
79  return obj
80 end
81
82 --[[
83 ConnectorListener.ConnectorDataListenerT = {}
84 ConnectorListener.ConnectorDataListenerT.new = function()
85  local obj = {}
86  function obj:__call__(info, cdrdata, dataType)
87   local Manager = require "openrtm.Manager"
88   local _data = Manager:instance():cdrUnmarshal(cdrdata, dataType)
89   return _data 
90  end
91  local call_func = function(self, info, cdrdata, data)
92   self:call(info, cdrdata, data)
93  end
94  setmetatable(obj, {__call=call_func})
95  return obj
96 end
97 ]]
98
99
100
101 ConnectorListener.ConnectorListenerType = {
102     ON_BUFFER_EMPTY        = 1,
103       ON_BUFFER_READ_TIMEOUT = 2,
104       ON_SENDER_EMPTY        = 3,
105       ON_SENDER_TIMEOUT      = 4,
106       ON_SENDER_ERROR        = 5,
107       ON_CONNECT             = 6,
108       ON_DISCONNECT          = 7,
109       CONNECTOR_LISTENER_NUM = 8
110 }
111
112
113
114 ConnectorListener.ConnectorListener = {}
115
116
117
118
119 ConnectorListener.ConnectorListener.toString = function(_type)
120     local typeString = {"ON_BUFFER_EMPTY",
121                         "ON_BUFFER_READ_TIMEOUT",
122                         "ON_SENDER_EMPTY", 
123                         "ON_SENDER_TIMEOUT", 
124                         "ON_SENDER_ERROR", 
125                         "ON_CONNECT",
126                         "ON_DISCONNECT",
127                         "CONNECTOR_LISTENER_NUM"}
128
129     if _type < ConnectorListener.ConnectorListenerType.CONNECTOR_LISTENER_NUM then
130         return typeString[_type]
131     end
132     return ""
133 end
134
135
136 ConnectorListener.ConnectorListener.new = function()
137     local obj = {}
138     function obj:call(info)
139         
140     end
141     local call_func = function(self, info)
142         self:call(info)
143     end
144     setmetatable(obj, {__call=call_func})
145     return obj
146 end
147
148
149 local Entry = {}
150 Entry.new = function(listener, autoclean)
151     local obj = {}
152     obj.listener  = listener
153     obj.autoclean = autoclean
154     return obj
155 end
156
157 ConnectorListener.ConnectorDataListenerHolder = {}
158 ConnectorListener.ConnectorDataListenerHolder.new = function()
159     local obj = {}
160     obj._listeners = {}
161     function obj:addListener(listener, autoclean)
162         table.insert(self._listeners, Entry.new(listener, autoclean))
163     end
164     function obj:removeListener(listener)
165         for i,_listener in ipairs(self._listeners) do
166             if _listener.listener == listener then
167                 if _listener.autoclean then
168                     table.remove(self._listeners, i)
169                 end
170             end
171         end
172     end
173     function obj:notify(info, cdrdata)
174         --print(cdrdata)
175         local ret = ConnectorListener.ConnectorListenerStatus.NO_CHANGE
176         for i, listener in ipairs(self._listeners) do
177             ret = listener.listener:call(info, cdrdata)
178         end
179         return ret
180     end
181     return obj
182 end
183
184
185
186 ConnectorListener.ConnectorListenerHolder = {}
187 ConnectorListener.ConnectorListenerHolder.new = function()
188     local obj = {}
189     obj._listeners = {}
190     function obj:addListener(listener, autoclean)
191         table.insert(self._listeners, Entry.new(listener, autoclean))
192     end
193     function obj:removeListener(listener)
194         for i,_listener in ipairs(self._listeners) do
195             if _listener.listener == listener then
196                 if _listener.autoclean then
197                     table.remove(self._listeners, i)
198                 end
199             end
200         end
201     end
202     function obj:notify(info)
203         local ret = ConnectorListener.ConnectorListenerStatus.NO_CHANGE
204         for i, listener in ipairs(self._listeners) do
205             ret = listener.listener:call(info)
206         end
207         return ret
208     end
209     return obj
210 end
211
212
213 ConnectorListener.ConnectorListeners = {}
214
215 ConnectorListener.ConnectorListeners.new = function()
216     local obj = {}
217     obj.connector_num = ConnectorListener.ConnectorDataListenerType.CONNECTOR_DATA_LISTENER_NUM
218     obj.connectorData_ = {}
219     for i = 1,obj.connector_num do
220         table.insert(obj.connectorData_, ConnectorListener.ConnectorDataListenerHolder.new())
221     end
222     obj.connector_num = ConnectorListener.ConnectorListenerType.CONNECTOR_LISTENER_NUM
223     obj.connector_ = {}
224     for i = 1,obj.connector_num do
225         table.insert(obj.connector_, ConnectorListener.ConnectorListenerHolder.new())
226     end
227     return obj
228 end
229
230
231 return ConnectorListener

File lua\openrtm\CorbaConsumer.lua

1 ---------------------------------
2 --! @file CorbaConsumer.lua
3 --! @brief CORBAコンシューマ定義クラス
4 ---------------------------------
5
6 --[[
7 Copyright (c) 2017 Nobuhiko Miyamoto
8 ]]
9
10 local CorbaConsumer= {}
11 --_G["openrtm.CorbaConsumer"] = CorbaConsumer
12
13
14 local oil = require "oil"
15 local RTCUtil = require "openrtm.RTCUtil"
16
17
18 CorbaConsumer.CorbaConsumerBase = {}
19
20 -- CORBAコンシューマオブジェクト初期化関数
21 -- @param consumer CORBAコンシューマオブジェクト
22 -- @return CORBAコンシューマオブジェクト
23 CorbaConsumer.CorbaConsumerBase.new = function(consumer)
24     local obj = {}
25
26     if consumer ~= nil then
27         obj._objr