class Solargraph::LanguageServer::Host::MessageWorker
A serial worker Thread to handle message.
this make check pending message possible, and maybe cancelled to speedup process
Public Class Methods
new(host)
click to toggle source
@param host [Host]
# File lib/solargraph/language_server/host/message_worker.rb, line 10 def initialize(host) @host = host @mutex = Mutex.new @resource = ConditionVariable.new @stopped = true end
Public Instance Methods
messages()
click to toggle source
pending handle messages
# File lib/solargraph/language_server/host/message_worker.rb, line 18 def messages @messages ||= [] end
queue(message)
click to toggle source
@param message [Hash] The message should be handle. will pass back to Solargraph::LanguageServer::Host#receive @return [void]
# File lib/solargraph/language_server/host/message_worker.rb, line 32 def queue(message) @mutex.synchronize do messages.push(message) @resource.signal end end
start()
click to toggle source
# File lib/solargraph/language_server/host/message_worker.rb, line 39 def start return unless @stopped @stopped = false Thread.new do tick until stopped? end end
stop()
click to toggle source
# File lib/solargraph/language_server/host/message_worker.rb, line 26 def stop @stopped = true end
stopped?()
click to toggle source
# File lib/solargraph/language_server/host/message_worker.rb, line 22 def stopped? @stopped end
tick()
click to toggle source
# File lib/solargraph/language_server/host/message_worker.rb, line 47 def tick message = @mutex.synchronize do @resource.wait(@mutex) if messages.empty? messages.shift end handler = @host.receive(message) handler && handler.send_response end