1 21 package com.db4o.db4ounit.common.acid; 22 23 import java.io.*; 24 25 import com.db4o.io.*; 26 27 28 public class CrashSimulatingIoAdapter extends VanillaIoAdapter{ 29 30 CrashSimulatingBatch batch; 31 32 long curPos; 33 34 public CrashSimulatingIoAdapter(IoAdapter delegateAdapter) { 35 super(delegateAdapter); 36 batch = new CrashSimulatingBatch(); 37 } 38 39 private CrashSimulatingIoAdapter(IoAdapter delegateAdapter, String path, boolean lockFile, long initialLength, CrashSimulatingBatch batch) throws IOException { 40 super(delegateAdapter.open(path, lockFile, initialLength)); 41 this.batch = batch; 42 } 43 44 public IoAdapter open(String path, boolean lockFile, long initialLength) throws IOException { 45 return new CrashSimulatingIoAdapter(_delegate, path, lockFile, initialLength, batch); 46 } 47 48 public void seek(long pos) throws IOException { 49 curPos=pos; 50 super.seek(pos); 51 } 52 53 public void write(byte[] buffer, int length) throws IOException { 54 super.write(buffer, length); 55 byte[] copy=new byte[buffer.length]; 56 System.arraycopy(buffer, 0, copy, 0, buffer.length); 57 batch.add(copy, curPos, length); 58 } 59 60 public void sync() throws IOException { 61 super.sync(); 62 batch.sync(); 63 } 64 } 65 | Popular Tags |