class GemeraldBeanstalk::Command
Constants
- BAD_FORMAT
- COMMANDS
- COMMANDS_RECOGNIZED_WITHOUT_SPACE_AFTER_COMMAND
- COMMANDS_REQUIRING_SPACE_AFTER_COMMAND
- COMMAND_METHOD_NAMES
- COMMAND_PARSER_REGEX
- TRAILING_SPACE_REGEX
- UNKNOWN_COMMAND
- VALID_TUBE_NAME_REGEX
- WHITE_SPACE_REGEX
- ZERO_STRING_REGEX
Attributes
body[RW]
command[R]
connection[R]
error[R]
Public Class Methods
new(raw_command, connection)
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 46 def initialize(raw_command, connection) @connection = connection parse(raw_command) end
Public Instance Methods
arguments()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 37 def arguments if command == :put return @args[0, @argument_cardnality].unshift(connection).push(body) else return @args[0, @argument_cardnality].unshift(connection) end end
method_name()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 52 def method_name return COMMAND_METHOD_NAMES[command] end
multi_part_request?()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 57 def multi_part_request? return command == :put && body.nil? end
to_s()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 62 def to_s return "#{command} #{@args.join(' ')}" end
valid?()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 67 def valid? return @valid end
Private Instance Methods
bad_format!()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 73 def bad_format! invalidate(BAD_FORMAT) end
bury()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 78 def bury @argument_cardnality = 2 return requires_no_space_after_line && requires_exact_argument_count && requires_valid_integer(@args[0]) && requires_valid_integer(@args[1], :positive => true) end
delete()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 87 def delete @argument_cardnality = 1 return true end
ignore()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 93 def ignore @argument_cardnality = 1 return requires_no_space_after_line && requires_exact_argument_count && requires_valid_tube_name(@args[0]) end
invalidate(error)
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 101 def invalidate(error) @error = error @value = false end
kick()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 107 def kick @argument_cardnality = 1 return requires(@args[0]) && requires_valid_integer(@args[0], :allow_trailing => true) end
kick_job()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 114 def kick_job @argument_cardnality = 1 return true end
list_tube_used()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 126 def list_tube_used @argument_cardnality = 0 return requires_only_command end
list_tubes()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 120 def list_tubes @argument_cardnality = 0 return requires_only_command end
list_tubes_watched()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 132 def list_tubes_watched @argument_cardnality = 0 return requires_only_command end
parse(raw_command)
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 138 def parse(raw_command) @command_lines = raw_command.match(COMMAND_PARSER_REGEX) if @command_lines.nil? return unknown_command! end @args = @command_lines[:command].split(WHITE_SPACE_REGEX) @command = @args.shift.to_sym rescue nil @space_after_command = @command && !!(raw_command[@command.length] =~ WHITE_SPACE_REGEX) @body = @command_lines[:body] return unknown_command! unless valid_command? return bad_format! unless send(method_name) @valid = true end
pause_tube()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 157 def pause_tube @argument_cardnality = 2 return requires_no_space_after_line && requires(@args[0]) && requires_valid_integer(@args[1]) && requires_valid_tube_name(@args[0]) end
peek()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 166 def peek @argument_cardnality = 1 return true end
peek_buried()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 172 def peek_buried @argument_cardnality = 0 return requires_only_command end
peek_delayed()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 178 def peek_delayed @argument_cardnality = 0 return requires_only_command end
peek_ready()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 184 def peek_ready @argument_cardnality = 0 return requires_only_command end
put()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 190 def put @argument_cardnality = 5 return false unless @args.all? do |arg| requires_valid_integer(arg, :positive => true) end # Handle weird case where BAD_FORMAT, but increments stats is_valid = requires_no_space_after_line unless is_valid connection.beanstalk.adjust_stats_cmd_put end return is_valid end
quit()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 205 def quit @argument_cardnality = 0 return requires_only_command end
release()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 211 def release @argument_cardnality = 3 return requires_no_space_after_line && requires_exact_argument_count && requires_valid_integer(@args[0]) && requires_valid_integer(@args[1], :positive => true) && requires_valid_integer(@args[2], :positive => true) end
requires(arg)
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 221 def requires(arg) return true unless arg.nil? bad_format! return false end
requires_exact_argument_count()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 229 def requires_exact_argument_count return true if @args.length == @argument_cardnality bad_format! return false end
requires_no_space_after_command()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 237 def requires_no_space_after_command return true unless @space_after_command bad_format! return false end
requires_no_space_after_line()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 245 def requires_no_space_after_line return true unless @command_lines[:command] =~ TRAILING_SPACE_REGEX bad_format! return false end
requires_only_command()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 253 def requires_only_command return requires_no_space_after_command && requires_exact_argument_count end
requires_space_after_command()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 258 def requires_space_after_command return true if @space_after_command bad_format! return false end
requires_valid_integer(arg, opts = {})
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 266 def requires_valid_integer(arg, opts = {}) arg_to_i = arg.to_i if opts[:allow_trailing] if arg_to_i == 0 && arg !~ ZERO_STRING_REGEX bad_format! return false end else if arg_to_i.to_s != arg bad_format! return false end end return true if opts[:positive] ? arg_to_i >= 0 : true bad_format! return false end
requires_valid_tube_name(tube_name)
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 287 def requires_valid_tube_name(tube_name) return true if valid_tube_name?(tube_name) bad_format! return false end
reserve()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 295 def reserve @argument_cardnality = 0 return requires_only_command end
reserve_with_timeout()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 301 def reserve_with_timeout @argument_cardnality = 1 return requires_space_after_command end
stats()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 307 def stats @argument_cardnality = 0 return requires_only_command end
stats_job()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 313 def stats_job @argument_cardnality = 1 return requires_space_after_command end
stats_tube()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 319 def stats_tube @argument_cardnality = 1 return requires_space_after_command && requires_no_space_after_line && requires_valid_tube_name(@args[0]) end
touch()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 327 def touch @argument_cardnality = 1 return true end
unknown_command!()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 341 def unknown_command! invalidate(UNKNOWN_COMMAND) end
use()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 333 def use @argument_cardnality = 1 return requires_no_space_after_line && requires_exact_argument_count && requires_valid_tube_name(@args[0]) end
valid_command?()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 346 def valid_command? return COMMANDS_RECOGNIZED_WITHOUT_SPACE_AFTER_COMMAND.include?(command) || ( COMMANDS_REQUIRING_SPACE_AFTER_COMMAND.include?(command) && @space_after_command ) end
valid_tube_name?(tube_name)
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 353 def valid_tube_name?(tube_name) return !tube_name.nil? && tube_name.bytesize <= 200 && VALID_TUBE_NAME_REGEX =~ tube_name end
watch()
click to toggle source
# File lib/gemerald_beanstalk/command.rb, line 358 def watch @argument_cardnality = 1 return requires_no_space_after_line && requires_exact_argument_count && requires_valid_tube_name(@args[0]) end