Class ArchivalStorageStage

All Implemented Interfaces:
EventHandlerIF, ProfilableIF, SingleThreadedEventHandlerIF

public class ArchivalStorageStage
extends Object
implements SingleThreadedEventHandlerIF, EventHandlerIF, ProfilableIF

The ArchivalStorageStage is responsible for fulfilling the server's roles as a Storage Server.

The ArchivalStorageStage handles requests to store and retrieve Disseminatables (e.g. Fragments and Tombstones) and VerifiableBlocks (e.g. DataObjects, InteriorNodes, and DataBlocks). In the former case, the ArchivalStorageStage acts as a Storage Server. In the latter case, the ArchivalStorageStage acts as a RemoteCache.


To store a Disseminatable (i.e. a Fragment), dispatch a DisseminateFragMsg containing the GUID of the Fragment, the A-GUID of the object that the Fragment belongs, and the Fragment itself. The local ArchivalStorageStage will receive the disseminate request message and return a DisseminateFragAckMsg that either includes an ACK (i.e. the local server will store the Fragment) or a NACK (i.e. the local server will not store the Fragment because the Fragment is corrupt or the server is already storing the fragment).

To retreive a Disseminatable (i.e. a Fragment), dispatch a RequestFragMsg containing the GUID of the Fragment and the A-GUID of the object that the Fragment belongs. The local ArchivalStorageStage will receive the request message and return a RequestFragResponseMsg that includes the Fragment) or includes the actual VerifiableBlock.

To discover if a node is willing to store Disseminatables dispatch a TypeRequestMsg to a random GUID. The DD will route the message to a node that closely matches the GUID. If an ArchivalStorageStage is running on the local server and the server is willing to store Disseminatables, than the server will return a TypeResponseMsg that includes a a MAC'd (i.e. Message Authenticated Certificate), stateing the servers willingness to store Disseminatables; otherwise, nothing will be returned.


NodeId of the local server where this stage is running.
Willingness for local server to serve as a Storage Server (true or false).

$Id: ArchivalStorageStage.java,v 1.35 2004/05/13 20:13:05 hweather Exp $
Hakim Weatherspoon
See Also:
DisseminateFragMsg, DisseminateFragAckMsg, RequestFragMsg, RequestFragResponseMsg, TypeRequestMsg, TypeResponseMsg, Disseminatable, Fragment, VerifiableBlock, DataObject, Btree.InteriorNode, DataObject.DataBlock

Constructor Summary
Method Summary
 void destroy()
 void handleEvent(QueueElementIF item)
 void handleEvents(QueueElementIF[] items)
 void init(ConfigDataIF config)
 int profileSize()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Detail


public ArchivalStorageStage()
Method Detail


public void handleEvent(QueueElementIF item)
                 throws EventHandlerException
Specified by:
handleEvent in interface EventHandlerIF


public void handleEvents(QueueElementIF[] items)
                  throws EventHandlerException
Specified by:
handleEvents in interface EventHandlerIF


public void init(ConfigDataIF config)
          throws Exception
Specified by:
init in interface EventHandlerIF


public void destroy()
             throws Exception
Specified by:
destroy in interface EventHandlerIF


public int profileSize()
Specified by:
profileSize in interface ProfilableIF