Sha256: 30d5c9bfd330dc2872c8e47bd404684713dcf4d5e4e6f00817a9462567c0793c

Contents?: true

Size: 1.25 KB

Versions: 10

Compression:

Stored size: 1.25 KB

Contents

module SalesforceStreamer
  class RedisReplay
    class << self
      def redis_connection
        @redis_connection ||= Configuration.instance.redis_connection || fail(RedisConnectionError)
      end

      attr_writer :redis_connection
    end

    def connection
      if RedisReplay.redis_connection.respond_to?(:with)
        RedisReplay.redis_connection.with do |conn|
          yield(conn)
        end
      else
        yield RedisReplay.redis_connection
      end
    end

    # Saves the value to a key with expiration
    def record(key, value)
      return unless key && value

      key = namespaced_key(key)
      value = Integer(value)
      connection { |c| c.setex key, SECONDS_TO_EXPIRE, value }
    rescue StandardError => e
      Configuration.instance.exception_adapter.call e
      nil
    end

    def retrieve(key)
      return unless key

      key = namespaced_key(key)
      value = connection { |c| c.get key }
      Integer(value) if value
    rescue StandardError => e
      Configuration.instance.exception_adapter.call e
      nil
    end

    private

    def namespaced_key(key)
      NAMESPACE + key.to_s
    end

    NAMESPACE = 'SalesforceStreamer:'.freeze
    SECONDS_TO_EXPIRE = 24 * 60 * 60 # 24 hours
    START = 0
    STOP = 0
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
salesforce_streamer-1.2.2 lib/salesforce_streamer/redis_replay.rb
salesforce_streamer-1.2.1 lib/salesforce_streamer/redis_replay.rb
salesforce_streamer-1.2.0 lib/salesforce_streamer/redis_replay.rb
salesforce_streamer-1.1.3 lib/salesforce_streamer/redis_replay.rb
salesforce_streamer-1.1.1 lib/salesforce_streamer/redis_replay.rb
salesforce_streamer-1.1.0 lib/salesforce_streamer/redis_replay.rb
salesforce_streamer-1.0.0 lib/salesforce_streamer/redis_replay.rb
salesforce_streamer-0.5.0 lib/salesforce_streamer/redis_replay.rb
salesforce_streamer-0.4.1 lib/salesforce_streamer/redis_replay.rb
salesforce_streamer-0.4.0 lib/salesforce_streamer/redis_replay.rb