ostore.archive
Class ArchivalStorageStage
java.lang.Object
|
+--ostore.archive.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.
USAGE
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.
INITIALIZATION PARAMETERS
- node_id
NodeId
of the local server where this stage
is running.
- StorageServer
- Willingness for local server to serve as a Storage Server
(true or false).
- Version:
- $Id: ArchivalStorageStage.java,v 1.35 2004/05/13 20:13:05 hweather Exp $
- Author:
- Hakim Weatherspoon
- See Also:
DisseminateFragMsg
,
DisseminateFragAckMsg
,
RequestFragMsg
,
RequestFragResponseMsg
,
TypeRequestMsg
,
TypeResponseMsg
,
Disseminatable
,
Fragment
,
VerifiableBlock
,
DataObject
,
Btree.InteriorNode
,
DataObject.DataBlock
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
ArchivalStorageStage
public ArchivalStorageStage()
handleEvent
public void handleEvent(QueueElementIF item)
throws EventHandlerException
- Specified by:
handleEvent
in interface EventHandlerIF
EventHandlerException
handleEvents
public void handleEvents(QueueElementIF[] items)
throws EventHandlerException
- Specified by:
handleEvents
in interface EventHandlerIF
EventHandlerException
init
public void init(ConfigDataIF config)
throws Exception
- Specified by:
init
in interface EventHandlerIF
Exception
destroy
public void destroy()
throws Exception
- Specified by:
destroy
in interface EventHandlerIF
Exception
profileSize
public int profileSize()
- Specified by:
profileSize
in interface ProfilableIF