package org.thrudb.thrift;
import java.io.File;
import org.apache.thrift.TException;
import org.apache.thrift.transport.TFramedTransport;
import org.apache.thrift.transport.TTransport;
import tokyocabinet.HDB;
public class TPeekingTransportFactory extends TFramedTransport.Factory {
private HDB hdb;
public TPeekingTransportFactory(String logDir, String logName)
throws TException {
int hdbFlags = HDB.OWRITER;
// verify db file
String logFileName = logDir + File.separatorChar + logName + ".tch";
File logFile = new File(logFileName);
if (logFile.isFile() && !logFile.canWrite())
throw new TException(logFileName + " is not writable");
if (logFile.isDirectory())
throw new TException(logFileName + " should not be a directory");
if (!logFile.exists())
hdbFlags |= HDB.OCREAT;
hdb = new HDB();
if (!hdb.open(logFileName, hdbFlags)) {
throw new TException(hdb.errmsg());
}
}
@Override
public TTransport getTransport(TTransport trans) {
return new TPeekingTransport(trans, hdb);
}
}