class Solargraph::LanguageServer::Host::Sources
A Host class for managing sources.
def async_update uri, updater
-
(void)-
Parameters:
-
updater(Source::Updater) -- -
uri(String) --
def async_update uri, updater src = find(uri) mutex.synchronize do open_source_hash[uri] = src.start_synchronize(updater) queue.push uri end changed notify_observers uri end
def clear
-
(void)-
def clear open_source_hash.clear end
def close uri
-
(void)-
Parameters:
-
uri(String) --
def close uri open_source_hash.delete uri end
def find uri
-
(Source)-
Parameters:
-
uri(String) --
Raises:
-
(FileNotFoundError)- if the URI does not match an open source.
def find uri open_source_hash[uri] || raise(Solargraph::FileNotFoundError, "Host could not find #{uri}") end
def include? uri
-
(Boolean)-
Parameters:
-
uri(String) --
def include? uri open_source_hash.key? uri end
def initialize
def initialize @stopped = true end
def mutex
-
(Mutex)-
def mutex @mutex ||= Mutex.new end
def open uri, text, version
-
(Source)-
Parameters:
-
version(Integer) -- -
text(String) -- -
uri(String) --
def open uri, text, version filename = uri_to_file(uri) source = Solargraph::Source.new(text, filename, version) open_source_hash[uri] = source end
def open_from_disk uri
def open_from_disk uri source = Solargraph::Source.load(UriHelpers.uri_to_file(uri)) open_source_hash[uri] = source end
def open_source_hash
-
(Array-)
def open_source_hash @open_source_hash ||= {} end
def queue
-
(Array-)
def queue @queue ||= [] end
def start
-
(void)-
def start return unless @stopped @stopped = false Thread.new do until stopped? tick sleep 0.25 if queue.empty? end end end
def stop
-
(void)-
def stop @stopped = true end
def stopped?
def stopped? @stopped end
def tick
-
(void)-
def tick return if queue.empty? uri = mutex.synchronize { queue.shift } return if queue.include?(uri) mutex.synchronize do nxt = open_source_hash[uri].finish_synchronize open_source_hash[uri] = nxt changed notify_observers uri end end
def update uri, updater
-
(Source)-
Parameters:
-
updater(Source::Updater) -- -
uri(String) --
Raises:
-
(FileNotFoundError)- if the URI does not match an open source.
def update uri, updater src = find(uri) mutex.synchronize { open_source_hash[uri] = src.synchronize(updater) } changed notify_observers uri end