• Classes
  • Modules
  • Namespaces
  • Files
  • Related Pages
  • File List
  • File Members

recoveryStore.h

Go to the documentation of this file.
00001 #ifndef recoveryStore_H
00002 #define recoveryStore_H
00003 
00004 /*******************************************************************
00005 * E.S.O. - ACS project
00006 *
00007 * "@(#) $Id: recoveryStore.h,v 1.8 2006/09/01 02:20:55 cparedes Exp $"
00008 *
00009 * who       when      what
00010 * --------  --------  ----------------------------------------------
00011 * msekoran  18/02/01  created
00012 */
00013 
00014 #ifndef __cplusplus
00015 #error This is a C++ include file and cannot be used from plain C
00016 #endif
00017 
00018 #include <acsutil.h>
00019 #include <recoveryExport.h>
00020 
00021 #include <ace/pre.h>
00022 #include <ace/SString.h>
00023 #include <ace/Hash_Map_Manager.h>
00024 #include <Thread_Mutex.h>
00025 #include <Recursive_Thread_Mutex.h>
00026 
00027 namespace recovery {
00028 
00032 #define MAX_RECORD_SIZE 1500
00033 
00037 #define SEPARATOR_CHAR 1
00038 
00051 class recovery_EXPORT RecoveryStore
00052 {
00053 public:
00054 
00062   RecoveryStore (const ACE_CString& file_name, bool load = true, ACE_UINT32 max_size = 0);
00063 
00067   ~RecoveryStore (void);
00068 
00074   int open (void);
00075 
00081   int close (void);
00082 
00087   ACE_UINT32 get_max_size (void);
00088 
00093   void set_max_size (ACE_UINT32 size);
00094 
00099   ACE_UINT32 get_current_size (void);
00100 
00105   ACE_UINT32 get_n_records (void);
00106 
00114   int log (const ACE_CString& id, const ACE_CString& data, bool bsave=true);
00115 
00121   int exists (const ACE_CString& id);
00122 
00129   int retrieve (const ACE_CString& id, ACE_CString& data);
00130 
00138   int update (const ACE_CString& id, const ACE_CString& data, bool bsave=true);
00139 
00146   int remove (const ACE_CString& id, bool bsave=true);
00147 
00148   typedef ACE_Hash_Map_Manager <ACE_CString, ACE_CString, ACE_Thread_Mutex> STORE_HASH_MAP;
00149   typedef ACE_Hash_Map_Iterator <ACE_CString, ACE_CString, ACE_Thread_Mutex> STORE_HASH_MAP_ITER;
00150   typedef ACE_Hash_Map_Entry <ACE_CString, ACE_CString> STORE_HASH_MAP_ENTRY;
00151 
00156   STORE_HASH_MAP_ITER get_iterator (void);
00157 
00162   int save(void); 
00163 
00168   int load(void); 
00169 
00174   int unlink(void); 
00175 
00176 protected:
00177 
00181   RecoveryStore::STORE_HASH_MAP rec_hash_;
00182 
00186   ACE_CString file_name_;
00187 
00191   ACE_UINT32 max_size_;
00192 
00196   ACE_UINT32 current_size_;
00197 
00201   ACE_UINT32 num_records_;
00202 
00206   ACE_Recursive_Thread_Mutex mutex_;
00207 };
00208 
00209 #include <ace/post.h>
00210 
00211  }; 
00212 
00213 #endif /* recoveryStore_H */
00214 
00215 // ************************************************************************
00216 //
00217 // REVISION HISTORY:
00218 //
00219 // $Log: recoveryStore.h,v $
00220 // Revision 1.8  2006/09/01 02:20:55  cparedes
00221 // small change, NAMESPACE_BEGIN / NAMESPACE_END / NAMESPACE_USE macross to clean up a little the cpp code
00222 //
00223 // Revision 1.7  2004/03/17 07:39:50  bjeram
00224 // ported to ACE 5.4 and TAO 1.4
00225 //
00226 // Revision 1.6  2002/02/08 14:21:44  vltsccm
00227 // bgustafs: Removed chmod for VxWorks
00228 //
00229 // Revision 1.5  2001/12/27 19:00:18  vltsccm
00230 // recovery1.5
00231 //
00232 // Revision 1.4  2001/07/12 07:07:22  vltsccm
00233 // recovery1.4
00234 //
00235 // Revision 1.3  2001/07/11 09:15:08  vltsccm
00236 // recovery1.3
00237 //
00238 //
00239 // ************************************************************************

Generated on Thu Jan 12 2012 23:13:51 for ACS-10.0 C++ API by  doxygen 1.7.0