Merge pull request #200 from Lignum/fs-weak-set

Replace WeakHashMap for open files with a weak set
This commit is contained in:
Daniel Ratcliffe 2017-05-06 21:44:28 +01:00 committed by GitHub
commit 5b6bbc3cbf
1 changed files with 3 additions and 4 deletions

View File

@ -11,7 +11,6 @@
import dan200.computercraft.api.filesystem.IWritableMount;
import java.io.*;
import java.lang.ref.WeakReference;
import java.util.*;
import java.util.regex.Pattern;
@ -292,7 +291,7 @@ private String toLocal( String path )
}
private final Map<String, MountWrapper> m_mounts = new HashMap<String, MountWrapper>();
private final WeakHashMap<IMountedFile, Object> m_openFiles = new WeakHashMap<IMountedFile, Object>();
private final Set<IMountedFile> m_openFiles = Collections.newSetFromMap( new WeakHashMap<IMountedFile, Boolean>() );
public FileSystem( String rootLabel, IMount rootMount ) throws FileSystemException
{
@ -309,7 +308,7 @@ public void unload()
// Close all dangling open files
synchronized( m_openFiles )
{
for(IMountedFile file : m_openFiles.keySet())
for(IMountedFile file : m_openFiles)
{
try {
file.close();
@ -667,7 +666,7 @@ private synchronized <T extends IMountedFile> T openFile(T file, Closeable handl
throw new FileSystemException("Too many files already open");
}
m_openFiles.put( file, null );
m_openFiles.add( file );
return file;
}
}