package com.vci.server.volume.delegate;
import java.util.Hashtable;
/**
*
Title:
* Description:
* Copyright: Copyright (c) 2009
* Company: VCI
* @author eddie
* @time 2009-8-17
* @version 1.0
*/
public class FileControl {
private static Hashtable array = new Hashtable();
public FileControl() {
}
public synchronized boolean lockRead(String fileName){
FileStruct fileStruct = (FileStruct)array.get(fileName);
if(fileStruct == null){
fileStruct= new FileStruct();
fileStruct.setRead(true);
fileStruct.addReader();
array.put(fileName,fileStruct);
return true;
} else if(!fileStruct.isWrite()){
fileStruct.addReader();
array.put(fileName,fileStruct);
return true;
} else {
return false;
}
}
public synchronized boolean lockWrite(String fileName){
FileStruct fileStruct = (FileStruct)array.get(fileName);
if(fileStruct == null){
fileStruct= new FileStruct();
fileStruct.setWrite(true);
array.put(fileName,fileStruct);
return true;
} else {
return false;
}
}
public synchronized void unlockRead(String fileName){
FileStruct fileStruct = (FileStruct)array.get(fileName);
if(fileStruct != null){
fileStruct.subReader();
array.put(fileName,fileStruct);
if(fileStruct.getReadNum() == 0){
array.remove(fileName);
}
}
}
public synchronized void unlockWrite(String fileName){
FileStruct fileStruct = (FileStruct)array.get(fileName);
if(fileStruct != null){
array.remove(fileName);
}
}
}