Class: Pdns::Remotebackend::Connector

Inherits:
Object
  • Object
show all
Defined in:
lib/pdns/remotebackend.rb

Direct Known Subclasses

Pipe, Unix

Instance Method Summary collapse

Constructor Details

#initialize(klass, options = {}) ⇒ Connector

Returns a new instance of Connector.



140
141
142
143
# File 'lib/pdns/remotebackend.rb', line 140

def initialize(klass, options = {})
  @handler = klass
  @options = options
end

Instance Method Details

#mainloop(reader, writer) ⇒ Object

Reads one line at a time from remotebackend, and calls approriate method

Parameters:

  • reader (Socket)

    Socket to read from’

  • writer (Socket)

    Socket to write to



149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
# File 'lib/pdns/remotebackend.rb', line 149

def mainloop(reader,writer)
  h = @handler.new
  
  reader.each_line do |line|
    # expect json
    input = {}
    line = line.strip
    next if line.empty?
    begin
      input = JSON.parse(line)
      method = "do_#{input["method"].downcase}"
      args = input["parameters"] || {}
      h.result = false
      h.log = []
      if h.respond_to?(method.to_sym) == false
        res = false
      else
        h.send(method,args)
      end
      writer.puts ({:result => h.result, :log => h.log}).to_json
    rescue JSON::ParserError
      writer.puts ({:result => false, :log => "Cannot parse input #{line}"}).to_json
      next
    end
  end
end