class Solargraph::LanguageServer::Message::Base
Attributes
@return [Hash, nil]
@return [Solargraph::LanguageServer::Host]
@return [Integer]
@return [String]
@return [Hash{String => undefined}]
@return [Hash]
@return [Hash, Array, nil]
Public Class Methods
Source
# File lib/solargraph/language_server/message/base.rb, line 30 def initialize host, request @host = host @id = request['id'].freeze @request = request.freeze @method = request['method'].freeze @params = (request['params'] || {}).freeze post_initialize end
@param host [Solargraph::LanguageServer::Host] @param request [Hash]
Public Instance Methods
Source
# File lib/solargraph/language_server/message/base.rb, line 40 def post_initialize; end
@return [void]
Source
# File lib/solargraph/language_server/message/base.rb, line 43 def process; end
@return [void]
Source
# File lib/solargraph/language_server/message/base.rb, line 62 def send_response return if id.nil? accept_or_cancel response = { jsonrpc: '2.0', id: id } response[:result] = result unless result.nil? response[:error] = error unless error.nil? response[:result] = nil if result.nil? and error.nil? json = response.to_json envelope = "Content-Length: #{json.bytesize}\r\n\r\n#{json}" Solargraph.logger.debug envelope host.queue envelope host.clear id end
@return [void]
Source
# File lib/solargraph/language_server/message/base.rb, line 54 def set_error code, message @error = { code: code, message: message } end
@param code [Integer] See Solargraph::LanguageServer::ErrorCodes @param message [String] @return [void]
Source
# File lib/solargraph/language_server/message/base.rb, line 47 def set_result data @result = data end
@param data [Hash, Array, nil] @return [void]
Private Instance Methods
Source
# File lib/solargraph/language_server/message/base.rb, line 83 def accept_or_cancel if host.cancel?(id) # https://microsoft.github.io/language-server-protocol/specifications/specification-current/#cancelRequest # cancel should send response RequestCancelled Solargraph::Logging.logger.info "Cancelled response to ##{id} #{method}" set_result nil set_error ErrorCodes::REQUEST_CANCELLED, 'Cancelled by client' else Solargraph::Logging.logger.info "Sending response to ##{id} #{method}" end end
@return [void]