summaryrefslogtreecommitdiff
path: root/trunk/TAO/orbsvcs/orbsvcs/Naming/Flat_File_Persistence.h
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/TAO/orbsvcs/orbsvcs/Naming/Flat_File_Persistence.h')
-rw-r--r--trunk/TAO/orbsvcs/orbsvcs/Naming/Flat_File_Persistence.h95
1 files changed, 95 insertions, 0 deletions
diff --git a/trunk/TAO/orbsvcs/orbsvcs/Naming/Flat_File_Persistence.h b/trunk/TAO/orbsvcs/orbsvcs/Naming/Flat_File_Persistence.h
new file mode 100644
index 00000000000..8c76dbc99a3
--- /dev/null
+++ b/trunk/TAO/orbsvcs/orbsvcs/Naming/Flat_File_Persistence.h
@@ -0,0 +1,95 @@
+// -*- C++ -*-
+
+//=============================================================================
+/**
+ * @file Flat_File_Persistence.h
+ *
+ * $Id$
+ *
+ * @author Marina Spivak <marina@cs.wustl.edu>
+ */
+//=============================================================================
+
+#ifndef TAO_FLAT_FILE_PERSISTENCE_H
+#define TAO_FLAT_FILE_PERSISTENCE_H
+
+#include "orbsvcs/Naming/Storable.h"
+#include "ace/OS_NS_stdio.h"
+
+TAO_BEGIN_VERSIONED_NAMESPACE_DECL
+
+//------------------------------------------------------------------------
+// The Flat File concrete classes
+//------------------------------------------------------------------------
+class TAO_NS_FlatFileStream : public TAO_Storable_Base
+{
+public:
+
+ TAO_NS_FlatFileStream(const ACE_CString & file, const char * mode);
+ virtual ~TAO_NS_FlatFileStream();
+
+ /// Remove a file by name (file is not open)
+ virtual void remove();
+
+ /// Check if a file exists on disk (file is not open)
+ virtual int exists();
+
+ /// Open a file (the remaining methods below all require an open file)
+ virtual int open();
+
+ /// Close an open file
+ virtual int close();
+
+ /// Acquire a file lock
+ virtual int flock (int whence, int start, int len);
+
+ /// Release a file lock
+ virtual int funlock (int whence, int start, int len);
+
+ /// Returns the last time an open file was changed
+ virtual time_t last_changed(void);
+
+ /// Write a header to disk
+ virtual TAO_Storable_Base& operator << (
+ const TAO_NS_Persistence_Header& header);
+
+ /// Read a header from disk
+ virtual TAO_Storable_Base& operator >> (
+ TAO_NS_Persistence_Header& header);
+
+ /// Write a record to disk
+ virtual TAO_Storable_Base& operator << (
+ const TAO_NS_Persistence_Record& record);
+
+ /// Read a record from disk
+ virtual TAO_Storable_Base& operator >> (
+ TAO_NS_Persistence_Record& record);
+
+ /// Write the global data to disk
+ virtual TAO_Storable_Base& operator << (
+ const TAO_NS_Persistence_Global& global);
+
+ /// Read the global data from disk
+ virtual TAO_Storable_Base& operator >> (
+ TAO_NS_Persistence_Global& global);
+
+private:
+ ACE_OS::ace_flock_t filelock_;
+ FILE* fl_;
+ ACE_CString file_;
+ ACE_CString mode_;
+};
+
+class TAO_NS_FlatFileFactory : public TAO_Naming_Service_Persistence_Factory
+{
+public:
+ // Factory Methods
+
+ /// Create the stream that can operate on a disk file
+ virtual TAO_Storable_Base *create_stream(const ACE_CString & file,
+ const ACE_TCHAR * mode);
+};
+
+TAO_END_VERSIONED_NAMESPACE_DECL
+
+#endif