1 29 30 package com.caucho.db.store; 31 32 import com.caucho.log.Log; 33 import com.caucho.util.L10N; 34 35 import java.io.IOException ; 36 import java.util.logging.Logger ; 37 38 41 public class XAWriteBlock extends WriteBlock { 42 private static final Logger log = Log.open(XAWriteBlock.class); 43 private static final L10N L = new L10N(XAWriteBlock.class); 44 45 private byte []_buffer; 46 47 public XAWriteBlock(Block block) 48 throws IOException 49 { 50 super(block); 51 52 _buffer = _freeBuffers.allocate(); 53 if (_buffer == null) 54 _buffer = new byte[Store.BLOCK_SIZE]; 55 56 block.read(); 57 58 System.arraycopy(block.getBuffer(), 0, getBuffer(), 0, Store.BLOCK_SIZE); 59 } 60 61 64 public byte []getBuffer() 65 { 66 return _buffer; 67 } 68 69 public void writeImpl(int offset, int length) 70 throws IOException 71 { 72 System.arraycopy(getBuffer(), offset, _block.getBuffer(), offset, 73 length); 74 75 _block.setDirty(offset, offset + length); 76 } 78 79 82 protected void freeImpl() 83 { 84 synchronized (this) { 85 byte []buffer = _buffer; 86 _buffer = null; 87 88 if (buffer != null) 89 _freeBuffers.free(buffer); 90 } 91 } 92 93 public String toString() 94 { 95 return "XAWriteBlock[" + getStore() + "," + getBlockId() / Store.BLOCK_SIZE + "]"; 96 } 97 } 98 | Popular Tags |