| 1 21 package com.db4o.test.acid; 22 23 import java.io.*; 24 25 import com.db4o.io.*; 26 27 public class LoggingIoAdapter extends VanillaIoAdapter { 28 private final static int READ=1; 29 private final static int WRITE=2; 30 private final static int SYNC=4; 31 32 private PrintStream _out; 33 private int _config; 34 private long _curpos; 35 36 public LoggingIoAdapter(IoAdapter delegateAdapter,PrintStream out) { 37 this(delegateAdapter,out,WRITE); 38 } 39 40 public LoggingIoAdapter(IoAdapter delegateAdapter,PrintStream out,int config) { 41 super(delegateAdapter); 42 _out=out; 43 _config=config; 44 } 45 46 private LoggingIoAdapter(IoAdapter delegateAdapter, String path, boolean lockFile, long initialLength, PrintStream out,int config) throws IOException { 47 super(delegateAdapter.open(path, lockFile, initialLength)); 48 _out=out; 49 _config=config; 50 _curpos=0; 51 } 52 53 public IoAdapter open(String path, boolean lockFile, long initialLength) throws IOException { 54 return new LoggingIoAdapter(_delegate,path,lockFile,initialLength,_out,_config); 55 } 56 57 public int read(byte[] bytes, int length) throws IOException { 58 if(config(READ)) { 59 _out.println("READ "+_curpos+","+length); 60 } 61 return _delegate.read(bytes, length); 62 } 63 64 public void seek(long pos) throws IOException { 65 _curpos=pos; 66 _delegate.seek(pos); 67 } 68 69 public void sync() throws IOException { 70 if(config(SYNC)) { 71 _out.println("SYNC"); 72 } 73 _delegate.sync(); 74 } 75 76 public void write(byte[] buffer, int length) throws IOException { 77 if(config(WRITE)) { 78 _out.println("WRITE "+_curpos+","+length); 79 } 80 _delegate.write(buffer, length); 81 } 82 83 private boolean config(int mask) { 84 return (_config&mask)!=0; 85 } 86 } 87 | Popular Tags |