class Neovim::EventLoop
@api private
Public Class Methods
child(argv)
click to toggle source
# File lib/neovim/event_loop.rb, line 18 def self.child(argv) new Connection.child(argv) end
new(connection)
click to toggle source
# File lib/neovim/event_loop.rb, line 26 def initialize(connection) @running = false @shutdown = false @connection = connection end
stdio()
click to toggle source
# File lib/neovim/event_loop.rb, line 22 def self.stdio new Connection.stdio end
tcp(host, port)
click to toggle source
# File lib/neovim/event_loop.rb, line 10 def self.tcp(host, port) new Connection.tcp(host, port) end
unix(path)
click to toggle source
# File lib/neovim/event_loop.rb, line 14 def self.unix(path) new Connection.unix(path) end
Public Instance Methods
notify(method, *args)
click to toggle source
# File lib/neovim/event_loop.rb, line 66 def notify(method, *args) log(:debug) { {name: method, arguments: args} } write(:notification, method, args) end
register_types(api, session)
click to toggle source
# File lib/neovim/event_loop.rb, line 94 def register_types(api, session) api.types.each do |type, info| id = info.fetch("id") klass = Neovim.const_get(type) log(:debug) { {type: type, id: id} } @connection.register_type(id) do |index| klass.new(index, session, api) end end end
request(request_id, method, *args)
click to toggle source
# File lib/neovim/event_loop.rb, line 42 def request(request_id, method, *args) log(:debug) do { request_id: request_id, method: method, arguments: args } end write(:request, request_id, method, args) end
respond(request_id, return_value, error)
click to toggle source
# File lib/neovim/event_loop.rb, line 54 def respond(request_id, return_value, error) log(:debug) do { request_id: request_id, return_value: return_value, error: error } end write(:response, request_id, error, return_value) end
run() { |read| ... }
click to toggle source
# File lib/neovim/event_loop.rb, line 71 def run @running = true last_value = nil loop do break unless @running break if @shutdown begin last_value = yield(read) rescue EOFError, Errno::EPIPE => e log_exception(:debug, e, __method__) shutdown rescue => e log_exception(:error, e, __method__) end end last_value ensure @connection.close if @shutdown end
shutdown()
click to toggle source
# File lib/neovim/event_loop.rb, line 36 def shutdown @running = false @shutdown = true @connection.close end
stop()
click to toggle source
# File lib/neovim/event_loop.rb, line 32 def stop @running = false end
Private Instance Methods
read()
click to toggle source
# File lib/neovim/event_loop.rb, line 108 def read array = @connection.flush.read Message.from_array(array) end
write(type, *args)
click to toggle source
# File lib/neovim/event_loop.rb, line 113 def write(type, *args) message = Message.public_send(type, *args) @connection.write(message.to_a) end