Project

General

Profile

« Previous | Next » 

Revision be27f17e

Added by Marc Dequènes over 13 years ago

  • ID be27f17e729f333bb133c4e7138e25a2e9ea12f4

[evol] improve a bit how interface errors are transmitted

View differences:

lib/cyborghood/cyborg/protocol.rb
result[:action_result] = @conversation.bot.interface.call(message.conv_thread.session,
message.action_parameters[:node],
message.action_parameters[:parameters])
rescue CyberError => e
result[:error] = {
:category => e.category,
:severity => e.severity,
:message => e.message
}
rescue
result[:error] = $!.to_s
result[:error] = {
:category => 'unknown',
:severity => :unrecoverable,
:message => $!.to_s
}
end
result
end
......
def receive_error_action(message)
cb = pop_callback(message)
if cb
cb.call({:reply => :error, :reason => message.action_parameters[:error]})
error = message.action_parameters[:error]
exception = CyberError.new(error[:severity], error[:category], error[:message])
cb.call({:status => :error, :exception => exception})
else
send_error_protocol("received reply for unknown action")
end
......
def receive_reply_decline(message)
cb = pop_callback(message)
if cb
cb.call({:reply => :decline, :reason => message.action_parameters[:reason]})
cb.call({:status => :decline, :reason => message.action_parameters[:reason]})
else
send_error_protocol("received reply for unknown action")
end
......
def receive_reply_result(message)
cb = pop_callback(message)
if cb
cb.call({:reply => :ok, :result => message.action_parameters[:result]})
cb.call({:status => :ok, :result => message.action_parameters[:result]})
else
send_error_protocol("received reply for unknown action")
end

Also available in: Unified diff