class HrrRbNetconf::Server::Capability::Base_1_0::Receiver
Public Class Methods
new(io_r, logger: nil)
click to toggle source
# File lib/hrr_rb_netconf/server/capability/base_1_0.rb, line 139 def initialize io_r, logger: nil self.logger = logger @io_r = io_r end
Public Instance Methods
receive_message()
click to toggle source
# File lib/hrr_rb_netconf/server/capability/base_1_0.rb, line 144 def receive_message buf = String.new loop do begin tmp = @io_r.read(1) rescue => e log_info { "Receiver IO closed: #{e.class}: #{e.message}" } return nil end if tmp.nil? log_info { "Receiver IO closed" } return nil end buf += tmp if buf[-6..-1] == ']]>]]>' break end end log_debug { "Received message: #{buf[0..-7].inspect}" } begin received_msg = REXML::Document.new(buf[0..-7], {:ignore_whitespace_nodes => :all}).root validate_received_msg received_msg received_msg rescue => e info = "Invalid received message: #{e.message.split("\n").first}: #{buf[0..-7].inspect}" log_info { info } raise info end end
validate_received_msg(received_msg)
click to toggle source
# File lib/hrr_rb_netconf/server/capability/base_1_0.rb, line 174 def validate_received_msg received_msg unless received_msg raise "No valid root tag interpreted" end unless "rpc" == received_msg.name raise "Invalid message: expected #{"rpc".inspect}, but got #{received_msg.name.inspect}" end unless "urn:ietf:params:xml:ns:netconf:base:1.0" == received_msg.namespace raise "Invalid namespace: expected #{"urn:ietf:params:xml:ns:netconf:base:1.0".inspect}, but got #{received_msg.namespace.inspect}" end end