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 76 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 52 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 43 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 19 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 68 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 29 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 90 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 83 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 72 def self.version "version#{TERMINATOR}" end