|
Public Types |
typedef ACE_UINT64 | Block_Serial_Number |
| A unique identifier for logical blocks in persistent storage.
|
typedef ACE_UINT32 | Block_Number |
| The physical address of a block in persistent storage.
|
typedef ACE_UINT16 | Block_Size |
| The size of a block in persistent storage.
|
typedef ACE_UINT16 | Block_Type |
| A code to indicate the type of block in persistent storage.
|
Public Member Functions |
| Routing_Slip_Persistence_Manager (Standard_Event_Persistence_Factory *factory) |
| The constructor.
|
| ~Routing_Slip_Persistence_Manager () |
| The destructor.
|
void | set_callback (Persistent_Callback *callback) |
| Set up callbacks.
|
bool | store (const ACE_Message_Block &event, const ACE_Message_Block &routing_slip) |
| Store an event + routing slip.
|
bool | update (const ACE_Message_Block &routing_slip) |
| Update the routing slip.
|
bool | remove () |
| Remove our associated event and routing slip from the Persistent_File_Allocator.
|
bool | reload (ACE_Message_Block *&event, ACE_Message_Block *&routing_slip) |
| Call this method to recover data during event reload.
|
Routing_Slip_Persistence_Manager * | load_next () |
| Get next RSPM during reload.
|
bool | store_root () |
| Commit root data to disk, which should only be done for a root node.
|
bool | load (Block_Number block_number, Block_Serial_Number expected_serial_number) |
| Reload data into this RSPM from the given block/serial#.
|
bool | is_root () const |
| Is this RSPM attached to the root block?
|
void | release_all () |
| During cleanup for shut down, release all chained RSPMs.
|
Private Member Functions |
bool | store_i (const ACE_Message_Block &event, const ACE_Message_Block &routing_slip) |
bool | update_i (const ACE_Message_Block &routing_slip) |
bool | store_event (const ACE_Message_Block &event) |
size_t | fill_block (Persistent_Storage_Block &psb, size_t offset_into_block, const ACE_Message_Block *data, size_t offset_into_msg) |
size_t | fill_block (Persistent_Storage_Block &psb, size_t offset_into_block, unsigned char *data, size_t data_size) |
bool | build_chain (Persistent_Storage_Block *first_block, Block_Header &first_header, ACE_Unbounded_Stack< size_t > &allocated_blocks, const ACE_Message_Block &data) |
| Build a chain of Persistent_Storage_Blocks.
|
bool | reload_chain (Persistent_Storage_Block *first_block, Block_Header &first_header, ACE_Unbounded_Stack< size_t > &allocated_blocks, ACE_Message_Block *amb, ACE_UINT64 expected_serial_number) |
| Reload a chain from persistent store.
|
bool | update_next_manager (Routing_Slip_Persistence_Manager *next) |
| Locked method to do the work of setting the next_manager_.
|
bool | persisted () |
| Have we been persisted yet?
|
size_t | write_first_routing_slip_block (bool prepare_only=false) |
| Write out our first event block.
|
void | dllist_push_back () |
| Insert ourselves into a linked list of Routing_Slip_Persistnce_Managers.
|
void | insert_before (Routing_Slip_Persistence_Manager *node) |
void | remove_from_dllist () |
| Remove ourselves from a linked list of Routing_Slip_Persistence_Managers.
|
Private Attributes |
ACE_SYNCH_MUTEX | lock_ |
bool | removed_ |
ACE_UINT64 | serial_number_ |
Persistent_File_Allocator * | allocator_ |
Standard_Event_Persistence_Factory * | factory_ |
Event_Header | event_header_ |
Routing_Slip_Header | routing_slip_header_ |
Persistent_Storage_Block * | first_event_block_ |
Persistent_Storage_Block * | first_routing_slip_block_ |
Routing_Slip_Persistence_Manager * | prev_manager_ |
| We are part of a doubly-linked list.
|
Routing_Slip_Persistence_Manager * | next_manager_ |
ACE_Unbounded_Stack< size_t > | allocated_event_blocks_ |
ACE_Unbounded_Stack< size_t > | allocated_routing_slip_blocks_ |
Persistent_Callback * | callback_ |
ACE_Message_Block * | event_mb_ |
| if these are non-zero we own 'em
|
ACE_Message_Block * | routing_slip_mb_ |
todo: to complete the strategization of event persistent storage this should become an interface that is implemented differently by different strategies. For now it interacts with Standard_Event_Persistence.