diff options
Diffstat (limited to 'lib/e17/eet.rb')
-rw-r--r-- | lib/e17/eet.rb | 92 |
1 files changed, 10 insertions, 82 deletions
diff --git a/lib/e17/eet.rb b/lib/e17/eet.rb index 929a0f8..324afee 100644 --- a/lib/e17/eet.rb +++ b/lib/e17/eet.rb @@ -1,56 +1,28 @@ #! /usr/bin/env ruby # -*- coding: UTF-8 -*- # -require 'ffi' +require 'e17/eet/eet-defs' +require 'e17/eet/eet-funcs' # module E17 - module EET - # - extend FFI::Library - # - ffi_lib 'eet' - [ - [ :eet_init, [], :int], - [ :eet_shutdown, [], :int], - [ :eet_clearcache, [], :void], - [ :eet_open, [:string, :int], :pointer], - [ :eet_mode_get, [:pointer], :int], - [ :eet_close, [:pointer], :int], - [ :eet_write, [:pointer, :string, :pointer, :int, :int], :int], - [ :eet_read, [:pointer, :string, :pointer], :pointer], - ].each do |func| - begin - attach_function *func - rescue Object => e - puts "Could not attach #{func} #{e.message}" - end - end - # - FILE_MODE_INVALID = -1 - FILE_MODE_READ = 0 - FILE_MODE_WRITE = 1 - FILE_MODE_READ_WRITE = 2 + module Eet # class << self # - alias init eet_init - alias shutdown eet_shutdown - alias clearcache eet_clearcache - # def open path, mode=FILE_MODE_READ, &blk if blk f = eet_open path, mode raise Exception.new "Unable to open file #{path}" if f.nil? - yield EETFile.new f + yield EetFile.new f eet_close f else f = eet_open path, mode - return EETFile.new f unless f.nil? + return EetFile.new f unless f.nil? end end end # - class EETFile + class EetFile # def initialize ptr @ptr=ptr @@ -58,21 +30,21 @@ module E17 private :initialize # def close - EET.eet_close @ptr + Eet.eet_close @ptr @ptr=nil end # def mode_get - EET.eet_mode_get @ptr + Eet.eet_mode_get @ptr end # def write key, data, compress=false - EET.eet_write @ptr, key, FFI::MemoryPointer.from_string(data), data.bytesize, ( compress ? 1 : 0 ) + Eet.eet_write @ptr, key, FFI::MemoryPointer.from_string(data), data.bytesize, ( compress ? 1 : 0 ) end # def read key ptr = FFI::MemoryPointer.new(:int) - data = EET.eet_read @ptr, key, ptr + data = Eet.eet_read @ptr, key, ptr s = ptr.read_int ptr.free return nil if s==0 @@ -81,50 +53,6 @@ module E17 # end # - class Error < Exception - ERROR_NONE=0 - ERROR_BAD_OBJECT=1 - ERROR_EMPTY=2 - ERROR_NOT_WRITABLE=3 - ERROR_OUT_OF_MEMORY=4 - ERROR_WRITE_ERROR=5 - ERROR_WRITE_ERROR_FILE_TOO_BIG=6 - ERROR_WRITE_ERROR_IO_ERROR=7 - ERROR_WRITE_ERROR_OUT_OF_SPACE=8 - ERROR_WRITE_ERROR_FILE_CLOSED=9 - ERROR_MMAP_FAILED=10 - ERROR_X509_ENCODING_FAILED=11 - ERROR_SIGNATURE_FAILED=12 - ERROR_INVALID_SIGNATURE=13 - ERROR_NOT_SIGNED=14 - ERROR_NOT_IMPLEMENTED=15 - ERROR_PRNG_NOT_SEEDED=16 - ERROR_ENCRYPT_FAILED=17 - ERROR_DECRYPT_FAILED=18 - # - MSGS = { - 0=>'No error, it\'s all fine!', - 1=>' Given object or handle is NULL or invalid', - 2=>'There was nothing to do', - 3=>'Could not write to file or fine is #FILE_MODE_READ', - 4=>'Could not allocate memory', - 5=>'Failed to write data to destination', - 6=>'Failed to write file since it is too big', - 7=>'Failed to write since generic Input/Output error', - 8=>'Failed to write due out of space', - 9=>'Failed to write because file was closed', - 10=>'Could not mmap file', - 11=>'Could not encode using X509', - 12=>'Could not validate signature', - 13=>'Signature is invalid', - 14=>'File or contents are not signed', - 15=>'Function is not implemented', - 16=>'Could not introduce random seed', - 17=>'Could not encrypt contents', - 18=>'Could not decrypt contents', - } - # - end end end # |