XrdSsiShMat Class Reference

#include <XrdSsiShMat.hh>

Inheritance diagram for XrdSsiShMat:
Inheritance graph
[legend]

List of all members.

Classes

struct  CRZParms
struct  NewParms

Public Member Functions

virtual bool AddItem (void *newdata, void *olddata, const char *key, int hash=0, bool replace=false)=0
virtual bool Attach (int tout, bool isrw=false)=0
virtual bool Create (CRZParms &parms)=0
virtual bool Export ()=0
virtual bool DelItem (void *data, const char *key, int hash=0)=0
virtual void Detach ()=0
 Detach the map from the shared memory.
virtual bool Enumerate (void *&jar, char *&key, void *&val)=0
virtual bool Enumerate (void *&jar)=0
virtual int Info (const char *vname, char *buff=0, int blen=0)=0
virtual bool GetItem (void *data, const char *key, int hash=0)=0
virtual bool Resize (CRZParms &parms)=0
virtual bool Sync ()=0
virtual bool Sync (bool dosync, bool syncdo=false)=0
virtual bool Sync (int synqsz)=0
 XrdSsiShMat (NewParms &parms)
 Constructor (arguments the same as for New()).
virtual ~XrdSsiShMat ()
 Destructor. Warning, your destructor should call your own Detach()!

Static Public Member Functions

static XrdSsiShMatNew (NewParms &parms)

Protected Attributes

char * shmImpl
char * shmPath
char * shmType
int shmTypeSz
int shmHash

Detailed Description

This class defines an abstract interface to a generic shared memory table that stores key-value pairs. Since this class a pure abstract any number of implementations may be supplied. The default one is named "XrdSsiShMam".


Constructor & Destructor Documentation

XrdSsiShMat::XrdSsiShMat ( NewParms parms  )  [inline]

Constructor (arguments the same as for New()).

virtual XrdSsiShMat::~XrdSsiShMat (  )  [inline, virtual]

Destructor. Warning, your destructor should call your own Detach()!

References shmImpl, shmPath, and shmType.


Member Function Documentation

virtual bool XrdSsiShMat::AddItem ( void *  newdata,
void *  olddata,
const char *  key,
int  hash = 0,
bool  replace = false 
) [pure virtual]

Add an item to the shared memory table.

Parameters:
newdata Pointer to the data to be added.
olddata Pointer to the area where the replaced data, if any, is to be placed.
key The key associated with the data that is to be added.
hash The hash of the key that is to be used to lookup the key. If the value is zero, an internal hash is computed.
replace When true, if the key exists, the data associated with the key is replaced. When false, if the key exists, the addition fails with errno set to EEXIST.
Returns:
true The addition/replacement succeeded. If the key was actually replaced errno is set to EEXIST else it is set to 0.
false The addition/replacement failed; errno indicates reason.

Implemented in XrdSsiShMam.

virtual bool XrdSsiShMat::Attach ( int  tout,
bool  isrw = false 
) [pure virtual]

Attach this object to the shared memory associated with this object at creation time (see New() method). The attach operation waits until the shared memory file is available. At that time, the file is memory mapped.

Parameters:
tout The maximum number of seconds to wait for the shared memory file to become available. If tout is zero, then the file must be immediately available. If the value is negative then the attach waits as long as needed. When tout is reached the attach fails with errno set to ETIMEDOUT.
isrw When true the file is mapped to writable memory and allows updates to the table. If false, the shared memory is made read/only and may be significantly faster to access.
Returns:
true - The shared memory was attached, the table can be used.
false - The shared memory could not be attached, errno holds reason.

Implemented in XrdSsiShMam.

virtual bool XrdSsiShMat::Create ( CRZParms parms  )  [pure virtual]

Implemented in XrdSsiShMam.

virtual bool XrdSsiShMat::DelItem ( void *  data,
const char *  key,
int  hash = 0 
) [pure virtual]

Delete an item from the table.

Parameters:
data Pointer to the area to receive the value of the deleted key. If the pointer is nil, then the key value is not returned.
key Pointer to the key of length <= MaxKLen.
hash The hash of the key that is to be used to lookup the key. If the value is zero, an internal hash is computed.
Returns:
true - The key and data have been deleted. This is always returned when data is nil.
false - The key and data either not deleted or the key does not exist and data was not nil. The errno value decribes why. Typical reason: the key was not found (errno == ENOENT).

Implemented in XrdSsiShMam.

virtual void XrdSsiShMat::Detach (  )  [pure virtual]

Detach the map from the shared memory.

Implemented in XrdSsiShMam.

virtual bool XrdSsiShMat::Enumerate ( void *&  jar  )  [pure virtual]

Terminate an active enumeration. An active enumeration is any enumeration where the previous form of Enumerate() did not return false. Terminating an active enumeration releases all of the enumeration resources allocated.

Parameters:
jar The opaque cookie initialized by a previous call to Enumerate() requesting the next key-value pair.
Returns:
true The enumeration has been terminated and the jar was deleted and the jar pointer is set to zero. Keys are returned in arbitrary order and not all keys may be returned if the map is being actively updated.
false The jar pointer was zero; no enumeration was active.

Implemented in XrdSsiShMam.

virtual bool XrdSsiShMat::Enumerate ( void *&  jar,
char *&  key,
void *&  val 
) [pure virtual]

Enumerate the keys and assocaited values.

Parameters:
jar An opaque cookie that tracks progress. It should be initialized to zero and otherwise not touched. The same jar must be used for all successive calls. The jar is deleted when false is returned (also see the next Enumerate method).
key The pointer variable where the location of the key is returned upon success.
val The pointer variable where the location f the key values is to be returned upon success.
Returns:
true A key and val pointers have been set. Keys are returned in arbitrary order and not all keys may be returned if the map is being actively updated.
false Key not returned; errno holds the reason. Typically, ENOENT there ae no more keys. Other errors may also be reflected. Whne false is returned the jar is deleted and the pointer to it set to zero.

Implemented in XrdSsiShMam.

virtual bool XrdSsiShMat::Export (  )  [pure virtual]

Export a newly created table (i.e. see Create()).

Returns:
true - The table has been exported and is now visible to others.
false - The export failed, the errno value describes the reason.

Implemented in XrdSsiShMam.

virtual bool XrdSsiShMat::GetItem ( void *  data,
const char *  key,
int  hash = 0 
) [pure virtual]

Get an item from the table.

Parameters:
data Pointer to an area to receive the value associated with key. If the pointer is nil, then the key value is not returned.
key Pointer to the key of length <= MaxKLen.
hash The hash of the key that is to be used to lookup the key. If the value is zero, an internal hash is computed.
Returns:
true - The key was found and if data was not nil, contains the value associated key.
false - The key not found; errno holds the reason (typically is ENOENT but may be some other reason).

Implemented in XrdSsiShMam.

virtual int XrdSsiShMat::Info ( const char *  vname,
char *  buff = 0,
int  blen = 0 
) [pure virtual]

Return information about the table.

Parameters:
vname Pointer to the variable name whose value is wanted. A particular implementation may not support all variable and may support variables not listed here. These are for the default implementation unless otherwise noted. They are: hash - name of hash being used. impl - The table implementation being used. indexsz - Number of index entries indexused - Number of index entries in use keys - Number of keys in the bale. keys/indexused is the hash table collision factor keysfree - Number of keys that can still be added maxkeylen - Longest allowed key multw - If table supports multiple writers, else 0 reuse - If table allows object reuse, else 0 type - Name of the data type in the table. typesz - The number of bytes in the table's data type
buff - Pointer to the buffer to receive text values. Variables that return text are: hash, impl, and type. A buffer must be supplied in any of these variables are requested. If buff is nill or too small a -1 is returned with errno set to EMSGSIZE.
blen The length of the buffer.
Returns:
>=0 - The variable's value or the length of the text information.
< 0 - The variable's value could not be returned; errno has the error code describing the reason, typically ENOTSUP.

Implemented in XrdSsiShMam.

static XrdSsiShMat* XrdSsiShMat::New ( NewParms parms  )  [static]
virtual bool XrdSsiShMat::Resize ( CRZParms parms  )  [pure virtual]

Resize a shared memory segment and associated file specified at object instantiation (see New() method). Resizing is implementation specific but may involve creating a new table and exporting it.

Parameters:
parms Resize parameters. See the CRZParms struct for details. For resize, zero values or unspecified flags use the existing table values.
Returns:
true - The shared memory was resized, the table can be used.
false - The shared memory could not be resized, errno holds reason.

Implemented in XrdSsiShMam.

virtual bool XrdSsiShMat::Sync ( int  synqsz  )  [pure virtual]

Set the sync defer queue size.

Parameters:
synqsz The maximum number of modified pages before flushing.
Returns:
true - Operation completed successfully.
false - Operation failed; errno holds the error code explaining why.

Implemented in XrdSsiShMam.

virtual bool XrdSsiShMat::Sync ( bool  dosync,
bool  syncdo = false 
) [pure virtual]

Turn memry synchronization on or off.

Parameters:
dosync When true, modified table pages are written back to the backing file. The synchronous or async nature of the write is controlled by the second parameter. When false, memory-file synchronization is turned off (initial setting).
syncdo When true, synchronization is done in the forground. That is, a call triggering a sync will not return until complete. When false, synchronization is done in the background.
Returns:
true - Operation completed successfully.
false - Operation failed; errno holds the error code explaining why.

Implemented in XrdSsiShMam.

virtual bool XrdSsiShMat::Sync (  )  [pure virtual]

Synchronize all modified pages to the associated backing file.

Returns:
true - Operation completed successfully.
false - Operation failed; errno holds the error code explaining why.

Implemented in XrdSsiShMam.


Member Data Documentation

int XrdSsiShMat::shmHash [protected]
char* XrdSsiShMat::shmImpl [protected]

Referenced by ~XrdSsiShMat().

char* XrdSsiShMat::shmPath [protected]

Referenced by ~XrdSsiShMat().

char* XrdSsiShMat::shmType [protected]

Referenced by ~XrdSsiShMat().

int XrdSsiShMat::shmTypeSz [protected]

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 7 Jul 2020 for xrootd by  doxygen 1.6.1