package com.onionnetworks.io;
import com.onionnetworks.util.*;
import java.io.*;
import java.util.*;
/**
* This raf commits its bytes the first time they are written.
*
* @author Justin Chapweske
*/
public class WriteCommitRaf extends CommitRaf {
public WriteCommitRaf(RAF raf) {
super(raf);
}
public synchronized void seekAndWrite(long pos, byte[] b, int off,
int len) throws IOException {
super.seekAndWrite(pos,b,off,len);
// Allow 0 length write to allow exceptions to be thrown.
if (len != 0) {
commit(new Range(pos,pos+len-1));
}
}
public synchronized void setReadOnly() throws IOException {
// When we switch to read-only, we commit the whole file.
super.setReadOnly();
long fileSize = length();
if (fileSize != 0) {
commit(new Range(0,fileSize-1));
}
}
}