def self.open_close(endpoint)
Module.new do
define_method("on_#{endpoint}_remote_open""on_#{endpoint}_remote_open") do |event|
begin
delegate("on_#{endpoint}_open""on_#{endpoint}_open", event.context)
event.context.open if event.context.local_uninit?
rescue StopAutoResponse
end
end
define_method("on_#{endpoint}_remote_close""on_#{endpoint}_remote_close") do |event|
delegate_error("on_#{endpoint}_error""on_#{endpoint}_error", event.context) if event.context.condition
begin
delegate("on_#{endpoint}_close""on_#{endpoint}_close", event.context)
event.context.close if event.context.local_active?
rescue StopAutoResponse
end
end
end
end