Sha256: 35ceaad790c2621a538e44cd72939a407ca4cdf8ae4f27063cdac0ad17a36a78
Contents?: true
Size: 1.44 KB
Versions: 2
Compression:
Stored size: 1.44 KB
Contents
require_relative '../data_conversion' module Ccrypto module Java class ManagedMemoryBuffer include DataConversion def initialize(*args, &block) @raf = java.io.RandomAccessFile.new(java.nio.file.Files.createTempFile(nil,".ccl").toFile, "rw") end def bytes buf = ::Java::byte[@raf.length].new @raf.seek(0) @raf.read_fully(buf) buf end # Return current cursor position def pos @raf.getFilePointer end def length @raf.length end def rewind @raf.seek(0) end def dispose(wcnt = 32) len = @raf.length @raf.seek(0) cnt = 0 loop do @raf.write(SecureRandomEngine.random_bytes(len)) @raf.seek(0) cnt += 1 break if cnt >= wcnt end @raf = nil GC.start end def write(val) @raf.write(to_java_bytes(val)) end def read(len) buf = ::Java::byte[len].new @raf.read(buf,0,len) buf end def respond_to_missing?(mtd, *args, &block) @raf.respond_to?(mtd, *args, &block) end def equals?(val) case val when ::Java::byte[] bytes == val when String bytes == to_java_bytes(val) else raise MemoryBufferException, "Unknown how to compare with #{val}" end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ccrypto-java-0.2.0 | lib/ccrypto/java/utils/memory_buffer.rb |
ccrypto-java-0.1.0 | lib/ccrypto/java/utils/memory_buffer.rb |