ccs.cpc.impl
Class ArchVDevice

java.lang.Object
  extended by ccs.cpc.VDevice
      extended by ccs.cpc.impl.ArchVDevice
All Implemented Interfaces:
ccs.utils.Hurlable
Direct Known Subclasses:
CDBVDevice

 class ArchVDevice
extends VDevice

An VDevice which is an archive - a beetree with a filesystem set in it.


Field Summary
protected  ccs.cdb.CDBeeTree bt
           
protected  java.lang.String name
           
protected  java.lang.String shortname
           
 
Constructor Summary
ArchVDevice(CpcImpl cpc, ArchLoadData ald)
           
 
Method Summary
 ccs.cdb.CDBeeTree getBT()
           
 ccs.cdb.CDBeeTree getCPAIffArchive()
          Blatant special-pleading hack, required to avoid excessive latency when streaming large files from CPAs.
 CpcImpl getCpc()
           
 java.io.File getHost()
           
 java.lang.String getName()
          returns the device identifier, for listing purposes.
 VFile getRoot()
          returns root directory
 java.lang.String getSeparator()
          returns the path element separator.
 char getSeparatorChar()
          the separator, as a char.
 java.lang.String getShortName()
          returns the device identifier, for changing directory.
 int getStoredPwdPrefixLength()
          The length of prefix to remove from a stored pwd (to implement "stateful devices" whereby when you return to a device after leaving it abruptly, you get straight back to the same place) to obtain a path relative to the device root which can then be walked.
 VDeviceLister getVDL()
          returns the object which lists all devices currently available.
protected  void marshalIDSlug(java.io.DataOutputStream dos)
          Every device requires a unique ID.
 void umount()
          closes the VDevice (to let it be removed from the list).
 
Methods inherited from class ccs.cpc.VDevice
getCPC, getID, getTitlePrefix, hurl, isNoCopy, isReal, isSort
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

bt

protected ccs.cdb.CDBeeTree bt

name

protected java.lang.String name

shortname

protected java.lang.String shortname
Constructor Detail

ArchVDevice

ArchVDevice(CpcImpl cpc,
            ArchLoadData ald)
      throws java.io.IOException
Throws:
java.io.IOException
Method Detail

getSeparator

public java.lang.String getSeparator()
Description copied from class: VDevice
returns the path element separator.

Specified by:
getSeparator in class VDevice

getSeparatorChar

public char getSeparatorChar()
Description copied from class: VDevice
the separator, as a char.

Specified by:
getSeparatorChar in class VDevice

getRoot

public VFile getRoot()
Description copied from class: VDevice
returns root directory

Specified by:
getRoot in class VDevice

getBT

public ccs.cdb.CDBeeTree getBT()

getHost

public java.io.File getHost()

getName

public java.lang.String getName()
Description copied from class: VDevice
returns the device identifier, for listing purposes.

Specified by:
getName in class VDevice

getShortName

public java.lang.String getShortName()
Description copied from class: VDevice
returns the device identifier, for changing directory. This is whatever punter would have to type to get to the root directory of the device. Thus we can get to device root somehow (which is usually easy), cull the short name, and carry on in a simple fashion. Other definitions get all hot and bothered about drive letters in DOS vs / for root FS in unix etc.

Specified by:
getShortName in class VDevice

getStoredPwdPrefixLength

public int getStoredPwdPrefixLength()
Description copied from class: VDevice
The length of prefix to remove from a stored pwd (to implement "stateful devices" whereby when you return to a device after leaving it abruptly, you get straight back to the same place) to obtain a path relative to the device root which can then be walked.

Specified by:
getStoredPwdPrefixLength in class VDevice

getVDL

public VDeviceLister getVDL()
Description copied from class: VDevice
returns the object which lists all devices currently available.

Specified by:
getVDL in class VDevice

umount

public void umount()
Description copied from class: VDevice
closes the VDevice (to let it be removed from the list). the "n" from this unmount has gone missing. If you find it, please return it.

Specified by:
umount in class VDevice

getCpc

public CpcImpl getCpc()

getCPAIffArchive

public ccs.cdb.CDBeeTree getCPAIffArchive()
Description copied from class: VDevice
Blatant special-pleading hack, required to avoid excessive latency when streaming large files from CPAs.

Overrides:
getCPAIffArchive in class VDevice

marshalIDSlug

protected void marshalIDSlug(java.io.DataOutputStream dos)
                      throws java.io.IOException
Description copied from class: VDevice
Every device requires a unique ID. For everything except result sets, this must also be persistent. This method must marshal suitable information to create such an ID. Start with a fixed char which specifies the device type: 'd' for disks, 'a' for archives (and CPC+ registered archives), 'z' for jars / zips, 'r' for result sets. Then add enough information to identify the device uniquely within its namespace.

Specified by:
marshalIDSlug in class VDevice
Parameters:
dos - The stream to marshal this lot onto. You should only send as much as you need to identify the device - say, a few hundred bytes, tops.
Throws:
java.io.IOException - if the stream blows up - this shouldn't happen.