class RuboCop::Server::SocketReader
This class sends the request read from the socket to server. @api private
Constants
- Header
- Request
Public Class Methods
new(socket)
click to toggle source
# File lib/rubocop/server/socket_reader.rb, line 20 def initialize(socket) @socket = socket end
Public Instance Methods
read!()
click to toggle source
# File lib/rubocop/server/socket_reader.rb, line 24 def read! request = parse_request(@socket.read) stderr = StringIO.new Helper.redirect( stdin: StringIO.new(request.body), stdout: @socket, stderr: stderr ) do create_command_instance(request).run end ensure Cache.stderr_path.write(stderr.string) @socket.close end
Private Instance Methods
create_command_instance(request)
click to toggle source
# File lib/rubocop/server/socket_reader.rb, line 53 def create_command_instance(request) klass = find_command_class(request.header.command) klass.new(request.header.args, token: request.header.token, cwd: request.header.cwd) end
find_command_class(command)
click to toggle source
# File lib/rubocop/server/socket_reader.rb, line 59 def find_command_class(command) case command when 'stop' then ServerCommand::Stop when 'exec' then ServerCommand::Exec else raise UnknownServerCommandError, "#{command.inspect} is not a valid command" end end
parse_header(header)
click to toggle source
# File lib/rubocop/server/socket_reader.rb, line 48 def parse_header(header) token, cwd, command, *args = header.shellsplit Header.new(token, cwd, command, args) end
parse_request(content)
click to toggle source
# File lib/rubocop/server/socket_reader.rb, line 42 def parse_request(content) raw_header, *body = content.lines Request.new(parse_header(raw_header), body.join) end