#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. |
typedef ACE_Hash_Map_With_Allocator<TAO_PSDL_String, TAO_PSDL_OctetSeq> TAO_PSDL_Datastore::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> TAO_PSDL_Datastore::NAME_OBJ_REF_ENTRY |
typedef ACE_Allocator_Adapter<ACE_Malloc <ACE_MMAP_MEMORY_POOL, TAO_SYNCH_MUTEX> > TAO_PSDL_Datastore::ALLOCATOR |
Allocator we will be using to make the Naming Service persistent.
TAO_PSDL_Datastore::TAO_PSDL_Datastore | ( | ) |
Constructor.
TAO_PSDL_Datastore::~TAO_PSDL_Datastore | ( | void | ) |
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.
int TAO_PSDL_Datastore::open | ( | const ACE_TCHAR * | file_name, | |
void * | base_address = ACE_DEFAULT_BASE_ADDR | |||
) |
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.
int TAO_PSDL_Datastore::init | ( | size_t | context_size | ) |
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.
int TAO_PSDL_Datastore::bind | ( | const char * | name, | |
const CORBA::OctetSeq & | octetseq | |||
) |
int TAO_PSDL_Datastore::unbind | ( | const char * | name | ) |
int TAO_PSDL_Datastore::find | ( | const char * | name, | |
CORBA::OctetSeq & | octet_seq | |||
) |
ACE_Allocator * TAO_PSDL_Datastore::allocator | ( | void | ) |
Return allocator.
int TAO_PSDL_Datastore::recreate_all | ( | void | ) | [private] |
Helper for the <init> method. Iterates over <index_>, and creates a servant for each entry.
int TAO_PSDL_Datastore::create_index | ( | void | ) | [private] |
Helper for the <open> method.
int TAO_PSDL_Datastore::create_index_helper | ( | void * | buffer | ) | [private] |
Helper for <create_index> method: places hash table into an allocated space.
TAO_SYNCH_MUTEX TAO_PSDL_Datastore::lock_ [private] |
Lock to prevent multiple threads from modifying entries in the <index_> simultanneously.
ALLOCATOR* TAO_PSDL_Datastore::allocator_ [private] |
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.
NAME_OBJ_REF_MAP* TAO_PSDL_Datastore::obj_ref_map_ [private] |
Hash map where we keep entries for all Persistent entries.
const ACE_TCHAR* TAO_PSDL_Datastore::index_file_ [private] |
Name of the memory-mapped file used by <allocator_>.
void* TAO_PSDL_Datastore::base_address_ [private] |
Base address for the memory-mapped file.