class Dalli::Protocol::Meta::RequestFormatter
Class that encapsulates logic for formatting meta protocol requests to memcached.
Public Class Methods
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
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
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
Source
# 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
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
Source
# File lib/dalli/protocol/meta/request_formatter.rb, line 68 def self.meta_noop "mn#{TERMINATOR}" end
rubocop:enable Metrics/CyclomaticComplexity rubocop:enable Metrics/MethodLength rubocop:enable Metrics/ParameterLists rubocop:enable Metrics/PerceivedComplexity
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
Source
# 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
rubocop:disable Metrics/MethodLength
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
Source
# File lib/dalli/protocol/meta/request_formatter.rb, line 72 def self.version "version#{TERMINATOR}" end