class Dalli::Protocol::Meta::RequestFormatter

Class that encapsulates logic for formatting meta protocol requests to memcached.

Public Class Methods

flush(delay: nil, quiet: false) click to toggle source
# File lib/dalli/protocol/meta/request_formatter.rb, line 75
def self.flush(delay: nil, quiet: false)
  cmd = +'flush_all'
  cmd << " #{delay}" if delay
  cmd << ' noreply' if quiet
  cmd + TERMINATOR
end
meta_arithmetic(key:, delta:, initial:, incr: true, cas: nil, ttl: nil, base64: false, quiet: false) click to toggle source
# File lib/dalli/protocol/meta/request_formatter.rb, line 51
def self.meta_arithmetic(key:, delta:, initial:, incr: true, cas: nil, ttl: nil, base64: false, quiet: false)
  cmd = "ma #{key} v"
  cmd << ' b' if base64
  cmd << " D#{delta}" if delta
  cmd << " J#{initial}" if initial
  cmd << " C#{cas}" if cas && !cas.zero?
  cmd << " N#{ttl}" if ttl
  cmd << ' q' if quiet
  cmd << " M#{incr ? 'I' : 'D'}"
  cmd + TERMINATOR
end
meta_delete(key:, cas: nil, ttl: nil, base64: false, quiet: false) click to toggle source
# File lib/dalli/protocol/meta/request_formatter.rb, line 42
def self.meta_delete(key:, cas: nil, ttl: nil, base64: false, quiet: false)
  cmd = "md #{key}"
  cmd << ' b' if base64
  cmd << " C#{cas}" if cas && !cas.zero?
  cmd << " T#{ttl}" if ttl
  cmd << ' q' if quiet
  cmd + TERMINATOR
end
meta_get(key:, value: true, return_cas: false, ttl: nil, base64: false, quiet: false) click to toggle source

Since these are string construction methods, we're going to disable these Rubocop directives. We really can't make this construction much simpler, and introducing an intermediate object seems like overkill.

rubocop:disable Metrics/CyclomaticComplexity rubocop:disable Metrics/MethodLength rubocop:disable Metrics/ParameterLists rubocop:disable Metrics/PerceivedComplexity

# File lib/dalli/protocol/meta/request_formatter.rb, line 18
def self.meta_get(key:, value: true, return_cas: false, ttl: nil, base64: false, quiet: false)
  cmd = "mg #{key}"
  cmd << ' v f' if value
  cmd << ' c' if return_cas
  cmd << ' b' if base64
  cmd << " T#{ttl}" if ttl
  cmd << ' k q s' if quiet # Return the key in the response if quiet
  cmd + TERMINATOR
end
meta_noop() click to toggle source

rubocop:enable Metrics/CyclomaticComplexity rubocop:enable Metrics/MethodLength rubocop:enable Metrics/ParameterLists rubocop:enable Metrics/PerceivedComplexity

# File lib/dalli/protocol/meta/request_formatter.rb, line 67
def self.meta_noop
  "mn#{TERMINATOR}"
end
meta_set(key:, value:, bitflags: nil, cas: nil, ttl: nil, mode: :set, base64: false, quiet: false) click to toggle source
# File lib/dalli/protocol/meta/request_formatter.rb, line 28
def self.meta_set(key:, value:, bitflags: nil, cas: nil, ttl: nil, mode: :set, base64: false, quiet: false)
  cmd = "ms #{key} #{value.bytesize}"
  cmd << ' c' unless %i[append prepend].include?(mode)
  cmd << ' b' if base64
  cmd << " F#{bitflags}" if bitflags
  cmd << " C#{cas}" if cas && !cas.zero?
  cmd << " T#{ttl}" if ttl
  cmd << " M#{mode_to_token(mode)}"
  cmd << ' q' if quiet
  cmd << TERMINATOR
  cmd << value
  cmd + TERMINATOR
end
mode_to_token(mode) click to toggle source

rubocop:disable Metrics/MethodLength

# File lib/dalli/protocol/meta/request_formatter.rb, line 89
def self.mode_to_token(mode)
  case mode
  when :add
    'E'
  when :replace
    'R'
  when :append
    'A'
  when :prepend
    'P'
  else
    'S'
  end
end
stats(arg = nil) click to toggle source
# File lib/dalli/protocol/meta/request_formatter.rb, line 82
def self.stats(arg = nil)
  cmd = +'stats'
  cmd << " #{arg}" if arg
  cmd + TERMINATOR
end
version() click to toggle source
# File lib/dalli/protocol/meta/request_formatter.rb, line 71
def self.version
  "version#{TERMINATOR}"
end