Sha256: c8ccbfff9a58fdecff77069a9507aeb1683906eb5202d3ff2481c170187f930d

Contents?: true

Size: 1.37 KB

Versions: 1

Compression:

Stored size: 1.37 KB

Contents

class Sparkey::LogWriter
  include Sparkey::Errors

  def create(filename, compression, block_size)
    ptr = FFI::MemoryPointer.new(:pointer)
    log_filename = "#{filename}.spl"

    handle_status Sparkey::Native.logwriter_create(ptr, log_filename, compression, block_size)

    @log_writer_ptr = ptr.get_pointer(0)
  end

  def open(filename)
    ptr = FFI::MemoryPointer.new(:pointer)
    log_filename = "#{filename}.spl"

    handle_status Sparkey::Native.logwriter_append(ptr, log_filename)
    @log_writer_ptr = ptr.get_pointer(0)
  end

  def put(key, value)
    key_length = key.bytesize
    key_ptr = FFI::MemoryPointer.new(:uint8, key_length)
    key_ptr.put_bytes(0, key)

    value_length = value.bytesize
    value_ptr = FFI::MemoryPointer.new(:uint8, value_length)
    value_ptr.put_bytes(0, value)

    handle_status Sparkey::Native.logwriter_put(@log_writer_ptr, key_length, key_ptr, value_length, value_ptr)
  end

  def delete(key)
    key_length = key.bytesize
    key_ptr = FFI::MemoryPointer.new(:uint8, key_length)
    key_ptr.put_bytes(0, key)

    handle_status Sparkey::Native.logwriter_delete(@log_writer_ptr, key_length, key_ptr)
  end

  def flush
    handle_status Sparkey::Native.logwriter_flush(@log_writer_ptr)
  end

  def close
    ptr = FFI::MemoryPointer.new(:pointer)
    ptr.put_pointer(0, @log_writer_ptr)

    Sparkey::Native.logwriter_close(ptr)
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
sparkey-1.0.0 lib/sparkey/log_writer.rb