summaryrefslogtreecommitdiffstats
path: root/lib/e17/eet.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/e17/eet.rb')
-rw-r--r--lib/e17/eet.rb92
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
#