class HrrRbNetconf::Server::Capability::Base_1_0::Sender

Public Class Methods

new(io_w, logger: nil) click to toggle source
# File lib/hrr_rb_netconf/server/capability/base_1_0.rb, line 101
def initialize io_w, logger: nil
  self.logger = logger
  @io_w = io_w
  @formatter = REXML::Formatters::Pretty.new(2)
  @formatter.compact = true
end

Public Instance Methods

send_message(msg) click to toggle source
# File lib/hrr_rb_netconf/server/capability/base_1_0.rb, line 108
def send_message msg
  buf = String.new
  case msg
  when String
    begin
      @formatter.write(REXML::Document.new(msg, {:ignore_whitespace_nodes => :all}).root, buf)
    rescue => e
      log_error { "Invalid sending message: #{msg.inspect}: #{e.message}" }
      raise "Invalid sending message: #{msg.inspect}: #{e.message}"
    end
  when REXML::Document
    @formatter.write(msg.root, buf)
  when REXML::Element
    @formatter.write(msg, buf)
  else
    log_error { "Unexpected sending message: #{msg.inspect}" }
    raise ArgumentError, "Unexpected sending message: #{msg.inspect}"
  end
  log_debug { "Sending message: #{buf.inspect}" }
  begin
    @io_w.write "#{buf}\n]]>]]>"
  rescue => e
    log_info { "Sender IO closed: #{e.class}: #{e.message}" }
    raise IOError, "Sender IO closed: #{e.class}: #{e.message}"
  end
end