Sha256: 126126e02727608399eb7827995f043b2d0008e778496669936ccb17388e1524

Contents?: true

Size: 1.14 KB

Versions: 1

Compression:

Stored size: 1.14 KB

Contents

module FFI
  module HiredisVip
    class SaddBefore24
      def initialize(client)
        @client = client
      end

      def sadd(key, *values)
        values = values.flatten
        number_added_to_set = 0
        command = "SADD %b %b"

        values.each do |value|
          begin
            reply = nil
            value = value.to_s
            command_args = [ :pointer, key, :size_t, key.size, :pointer, value, :size_t, value.size ]
            synchronize do |connection|
              reply = @client.execute_command(connection, command, *command_args)

              next if reply.nil? || reply.null?

              case reply[:type] 
              when :REDIS_REPLY_INTEGER
                number_added_to_set = number_added_to_set + reply[:integer]
              end
            end
          ensure
            ::FFI::HiredisVip::Core.freeReplyObject(reply.pointer) if reply
          end
        end

        number_added_to_set
      end

      private

      def synchronize
        @client.synchronize do |connection|
          yield(connection)
        end
      end

    end # class SaddBefore24
  end # module HiredisVip
end # module FFI

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ffi-hiredis_vip-0.1.0.pre4 lib/ffi/hiredis_vip/sadd_before_2_4.rb