package com.vci.server.volume.delegate;
|
|
import java.util.Hashtable;
|
|
/**
|
* <p>Title: </p>
|
* <p>Description: </p>
|
* <p>Copyright: Copyright (c) 2009</p>
|
* <p>Company: VCI</p>
|
* @author eddie
|
* @time 2009-8-17
|
* @version 1.0
|
*/
|
public class FileControl {
|
|
private static Hashtable<String, FileStruct> array = new Hashtable<String, FileStruct>();
|
|
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);
|
}
|
}
|
}
|