Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members

CascadeSharedList.h

Go to the documentation of this file.
00001 //
00002 // CascadeSharedList.h - header file for class CascadeSharedList
00003 //
00004 // Copyright (c) 2003, Roku, LLC.  All rights reserved.
00005 //
00008 
00009 #ifndef _ROKU_INCLUDE_CASCADE_INTERPROCESS_CASCADESHAREDLIST_H
00010 #define _ROKU_INCLUDE_CASCADE_INTERPROCESS_CASCADESHAREDLIST_H
00011 
00012 #include <cascade/CascadeObject.h>
00013 
00034 class CascadeSharedList : public CascadeObject
00035 {
00036 public:
00037         CascadeSharedList();
00041     virtual ~CascadeSharedList();
00045 
00046 public:
00047     enum {
00048         kMaxHeaderSize = 0xF000,    
00049         kMaxEntrySize = 0xF000,     
00050         kMaxEntries = 0xF000        
00051     };
00052     
00053 public:
00054     bool Open(const char * pName, u16 nHeaderSize, u16 nEntrySize, u16 nMaxEntries, bool bCreateIfNecessary);
00088     bool Close();
00105         bool MapLock();
00113         bool Unlock();
00122 public:
00123     // public List accessor functions - these will only work if the list is successfully MapLocked.
00124     typedef void Entry;
00133     bool InsertAtHead(void * pData);
00142     bool AddToTail(void * pData);
00151     bool Insert(void * pData, Entry * pEntryToInsertBefore);
00164     u16 GetNumEntries();
00175     u16 GetMaxEntries();
00180     u16 GetNumEntriesWatermark();
00186     Entry * GetFirstEntry();
00191     Entry * GetLastEntry();
00196     Entry * GetNextEntry(Entry * pEntry);
00203     Entry * GetPrevEntry(Entry * pEntry);
00210     int  GetEntryPID(Entry * pEntry);
00216     void ResetEntryPID(Entry * pEntry, int nPID);
00222     bool IsStalePIDEntry(Entry * pEntry);
00230     bool MoveEntry(Entry * pEntry, Entry * pEntryToMoveBefore);
00238     bool MoveEntryToHead(Entry * pEntry);
00245     bool MoveEntryToTail(Entry * pEntry);
00252     bool RemoveEntry(Entry * pEntry);
00260     void PurgeDeadPIDEntries();
00265     void * GetListHeader();
00276     typedef bool (EnumProc)(Entry * pEnry, void * pClientData);
00287     bool Enumerate(EnumProc * pEnumProc, void * pClientData);
00299     bool PIDPurgeEnumerate(EnumProc * pEnumProc, void * pClientData);
00313         
00314 private:
00315     void * m_pSharedListInternal;
00316 };
00317 
00318 #endif // #ifndef _ROKU_INCLUDE_CASCADE_INTERPROCESS_CASCADESHAREDLIST_H
00319 
00321 //  LOG
00323 //  27-Feb-03   dwoodward       created
00324 //  02-Mar-03   dwoodward   added Enumerate and PIDPurgeEnumerate
00325 //  05-May-03   dwoodward   doxygenated
00326 //  12-May-03   dwoodward   added ResetEntryPID()
00327 

Generated on Sun Jul 24 14:27:17 2005 for Cascade Library by  doxygen 1.4.1