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