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); } } }