org.planx.io
Class MemoryFileSystem

java.lang.Object
  extended by org.planx.io.MemoryFileSystem
All Implemented Interfaces:
FileSystem

public class MemoryFileSystem
extends Object
implements FileSystem

An implementation of FileSystem that uses an in-memory byte array to store data. Sub-blocks of data cannot be freed. However, there is a special clear() method that frees all data in the file system.

The implementation is not synchronized and should thus be synchronized externally.

Author:
Thomas Ambus

Constructor Summary
MemoryFileSystem()
           
MemoryFileSystem(int capacity)
           
MemoryFileSystem(int capacity, SourceId id)
           
MemoryFileSystem(SourceId id)
           
 
Method Summary
 Bound all()
          Returns a locator encapsulating all data currently in this file system.
 Bound allocate()
          Always succeeds and allocates space at end of the buffer.
 Bound allocate(long size)
          Always succeeds and allocates space at end of the buffer.
 void clear()
          Frees all data and generates a new SourceId.
 void clearModified()
          Marks this file system as unmodified.
 void close()
          No effect.
 void free(Bound l)
          Space cannot be freed, so this method does nothing.
 PositionalData getData(Locator l)
          Returns a unique PositionalData instance with a view of the data in this FileSystem.
 Bound getMeta()
          Unsupported - returns null.
 SourceId id()
          Returns a SourceId identifying this FileSystem in its present state.
 boolean isContained(Locator l)
          Returns true if the specified Locator originates from this FileSystem and is valid.
 boolean isModified()
          Returns true if this file system has been modified since it was created or since the last call to FileSystem.clearModified().
 boolean isReadOnly()
          Returns true if this file system is read-only.
 void setMeta(Bound b)
          Unsupported.
 void setReadOnly(boolean isReadOnly)
          Sets the read-only status of this file system.
 long size()
          Returns the size of this file system.
 String toString()
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

MemoryFileSystem

public MemoryFileSystem()

MemoryFileSystem

public MemoryFileSystem(SourceId id)

MemoryFileSystem

public MemoryFileSystem(int capacity)

MemoryFileSystem

public MemoryFileSystem(int capacity,
                        SourceId id)
Method Detail

id

public SourceId id()
Description copied from interface: FileSystem
Returns a SourceId identifying this FileSystem in its present state. The SourceId can change at any point and is not necessarily equal to the SourceIds returned by allocation method even though these may still be valid. Thus, this SourceId should be regarded as a unique canonical id that identifies only the present state of this FileSystem.

Specified by:
id in interface FileSystem

allocate

public Bound allocate()
               throws IOException
Always succeeds and allocates space at end of the buffer.

Specified by:
allocate in interface FileSystem
Throws:
IOException - if an I/O error occurred.

allocate

public Bound allocate(long size)
               throws IOException
Always succeeds and allocates space at end of the buffer.

Specified by:
allocate in interface FileSystem
Throws:
IOException - if an I/O error occurred or the specified amount of bytes could not be allocated.

all

public Bound all()
          throws IOException
Description copied from interface: FileSystem
Returns a locator encapsulating all data currently in this file system.

Specified by:
all in interface FileSystem
Throws:
IOException - if an I/O error occurred.

free

public void free(Bound l)
          throws IOException
Space cannot be freed, so this method does nothing.

Specified by:
free in interface FileSystem
Throws:
IOException - if an I/O error occurred.
InvalidSourceIdException - if the file system identifier of the locator is invalid.
OutOfBoundsException - if the locator is out of bounds.

getMeta

public Bound getMeta()
              throws IOException
Unsupported - returns null.

Specified by:
getMeta in interface FileSystem
Throws:
IOException

setMeta

public void setMeta(Bound b)
             throws IOException
Unsupported.

Specified by:
setMeta in interface FileSystem
Throws:
IOException

clear

public void clear()
Frees all data and generates a new SourceId. Thus, old locators will become invalid.

Specified by:
clear in interface FileSystem

getData

public PositionalData getData(Locator l)
                       throws IOException
Returns a unique PositionalData instance with a view of the data in this FileSystem. Any changes written to the PositionalData is reflected in the FileSystem and all PositionalData instances returned by this method.

Specified by:
getData in interface FileSystem
Throws:
IOException - if an I/O error occurred.
InvalidSourceIdException - if the file system identifier of the locator is invalid.
OutOfBoundsException - if the locator is out of bounds.

size

public long size()
          throws IOException
Description copied from interface: FileSystem
Returns the size of this file system.

Specified by:
size in interface FileSystem
Throws:
IOException - if an I/O error occurred.

isModified

public boolean isModified()
Description copied from interface: FileSystem
Returns true if this file system has been modified since it was created or since the last call to FileSystem.clearModified().

Specified by:
isModified in interface FileSystem

clearModified

public void clearModified()
Description copied from interface: FileSystem
Marks this file system as unmodified.

Specified by:
clearModified in interface FileSystem

isReadOnly

public boolean isReadOnly()
Description copied from interface: FileSystem
Returns true if this file system is read-only.

Specified by:
isReadOnly in interface FileSystem

setReadOnly

public void setReadOnly(boolean isReadOnly)
Description copied from interface: FileSystem
Sets the read-only status of this file system.

Specified by:
setReadOnly in interface FileSystem

close

public void close()
           throws IOException
No effect.

Specified by:
close in interface FileSystem
Throws:
IOException - if an I/O error occurred.

isContained

public boolean isContained(Locator l)
                    throws IOException
Description copied from interface: FileSystem
Returns true if the specified Locator originates from this FileSystem and is valid.

Specified by:
isContained in interface FileSystem
Throws:
IOException

toString

public String toString()
Overrides:
toString in class Object


Copyright © 2004-2005 Plan-X. All Rights Reserved.