#include <PSDL_Datastore.h>
Collaboration diagram for TAO_PSDL_Datastore:
Public Types | |
typedef ACE_Hash_Map_With_Allocator< TAO_PSDL_String, TAO_PSDL_OctetSeq > | NAME_OBJ_REF_MAP |
Hash map used by Persistent Naming Context to keep its state. | |
typedef ACE_Hash_Map_Entry< TAO_PSDL_String, TAO_PSDL_OctetSeq > | NAME_OBJ_REF_ENTRY |
typedef ACE_Allocator_Adapter< ACE_Malloc< ACE_MMAP_MEMORY_POOL, TAO_SYNCH_MUTEX > > | ALLOCATOR |
Allocator we will be using to make the Naming Service persistent. | |
Public Member Functions | |
TAO_PSDL_Datastore () | |
Constructor. | |
int | open (const ACE_TCHAR *file_name, void *base_address=ACE_DEFAULT_BASE_ADDR) |
int | init (size_t context_size) |
~TAO_PSDL_Datastore (void) | |
int | bind (const char *name, const CORBA::OctetSeq &octetseq) |
int | unbind (const char *name) |
int | find (const char *name, CORBA::OctetSeq &octet_seq) |
ACE_Allocator * | allocator (void) |
Return allocator. | |
Private Member Functions | |
int | recreate_all (void) |
int | create_index (void) |
Helper for the <open> method. | |
int | create_index_helper (void *buffer) |
Private Attributes | |
TAO_SYNCH_MUTEX | lock_ |
ALLOCATOR * | allocator_ |
NAME_OBJ_REF_MAP * | obj_ref_map_ |
Hash map where we keep entries for all Persistent entries. | |
const ACE_TCHAR * | index_file_ |
Name of the memory-mapped file used by <allocator_>. | |
void * | base_address_ |
Base address for the memory-mapped file. |
|
Allocator we will be using to make the Naming Service persistent.
|
|
|
|
Hash map used by Persistent Naming Context to keep its state.
|
|
Constructor.
|
|
Destructor. The memory mapped file that was opened/created is not deleted, since we want it to keep the state of the Database until the next run. |
|
Return allocator.
|
|
|
|
Helper for the <open> method.
|
|
Helper for <create_index> method: places hash table into an allocated space. |
|
|
|
If <index_> contains no entries (i.e., was just created), create a root Persistent servant with table of size <context_size>, and make an entry for it in the <index_>. If <index_> contains entries, create a Persistent servant for each entry. Return 0 on success and -1 on failure. |
|
Create ACE_Allocator, open/create memory-mapped file with the specified file name/base address. Find or allocate <index_>. Return 0 on success or -1 on failure. |
|
Helper for the <init> method. Iterates over <index_>, and creates a servant for each entry. |
|
|
|
Allocator that deals out memory from a memory-mapped file. We use it whenever we deal with data that should be kept in persistent store. |
|
Base address for the memory-mapped file.
|
|
Name of the memory-mapped file used by <allocator_>.
|
|
Lock to prevent multiple threads from modifying entries in the <index_> simultanneously. |
|
Hash map where we keep entries for all Persistent entries.
|