package com.alimama.mdrill.solr.realtime; import java.io.IOException; import org.apache.lucene.store.Directory; import org.apache.lucene.store.IndexInput; import org.apache.lucene.store.IndexOutput; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class DirectoryInfo { public static Logger LOG = LoggerFactory.getLogger(DirectoryInfo.class); public static enum DirTpe{ hdfs,file,ram,buffer,delete } public Directory d; public long createtime=System.currentTimeMillis(); public DirTpe tp=DirTpe.file; public long txid=0; public void UpTxid(long txidp) { this.txid=Math.max(this.txid, txidp); } public long readTxid() throws IOException { if(txid>0) { return txid; } if(!d.fileExists("txid")) { return 0l; } IndexInput in=d.openInput("txid"); long rtn=0l; try{ rtn=Long.parseLong(in.readString()); }catch (Throwable e) { rtn=0; } in.close(); return rtn; } public void synctxid() throws IOException { if(d.fileExists("txid")) { d.deleteFile("txid"); } IndexOutput out=d.createOutput("txid"); out.writeString(String.valueOf(this.txid)); out.close(); } public Long filelength() { Long rtn=0l; try{ String[] list=this.d.listAll(); if(list!=null) { for(String d:list) { try{ rtn+=this.d.fileLength(d); }catch(Throwable e) { LOG.error("getfilelen:"+this.d.toString(),e); } } } }catch(Throwable e) { LOG.error("filelength",e); } return rtn; } }