peiyongz 2003/10/29 08:16:48
Modified: c/src/xercesc/framework XMLGrammarPool.hpp
Log:
GrammarPool' serialization/deserialization support
Revision Changes Path
1.6 +60 -3 xml-xerces/c/src/xercesc/framework/XMLGrammarPool.hpp
Index: XMLGrammarPool.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/framework/XMLGrammarPool.hpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- XMLGrammarPool.hpp 10 Oct 2003 18:36:03 -0000 1.5
+++ XMLGrammarPool.hpp 29 Oct 2003 16:16:48 -0000 1.6
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.6 2003/10/29 16:16:48 peiyongz
+ * GrammarPool' serialization/deserialization support
+ *
* Revision 1.5 2003/10/10 18:36:03 neilg
* update XMLGrammarPool interface to make expected behaviour of locked pools
better specified, and to add the capability to generate XSModels
*
@@ -93,6 +96,8 @@
class XMLDTDDescription;
class XMLSchemaDescription;
class XMLStringPool;
+class BinInputStream;
+class BinOutputStream;
class XMLPARSER_EXPORT XMLGrammarPool : public XMemory
{
@@ -252,7 +257,59 @@
*/
virtual XMLStringPool *getURIStringPool() = 0;
//@}
-
+
+ // -----------------------------------------------------------------------
+ /** serialization and deserialization support
+ // -----------------------------------------------------------------------
+
+ /***
+ *
+ * 1. Context: Serialize/Deserialize All Grammars In One Session
+ *
+ * Since it is common that a declaration in one grammar may reference
+ * to definitions in another grammar, it is required to serialize those
+ * related (or interdependent) grammars in to one persistent data store
+ * in one serialization session (storing), and deserialize them from the
+ * persistent data store in one deserialization session (loading) back
+ * to the grammar pool.
+ *
+ * 2. Multiple serialization
+ *
+ * It is acceptable that client application requests more than one
+ * gramamr serialization on a particular grammar pool, to track the
+ * different grammars cached, or for whatever reasons that client
+ * application is interested in. However it is strongly recommended that
+ * the client application requests no more than one gramamr deserialization
+ * and only does it when the grammar pool is empty.
+ *
+ * For multiple serializations, if the same file name is given, then the
+ * last result will be in the file (overwriting mode), if different file
+ * names are given, then we have multiple data stores for each
serialization.
+ *
+ * 3. Multiple deserialization
+ *
+ * Request for grammar deserialization either after the grammar pool has
+ * its own cached grammars, or request for more than one grammar
+ * deserialization, may cause undesired and unpredictable consequence
+ * and therefore is NOT supported.
+ *
+ * 4. Locking
+ *
+ * Both serialization and deserialization requires to lock the grammar pool
+ * before operation and unlock after operation. In the case the grammar pool
+ * is locked by a third party, the request for serialization/deserialization
+ * will NOT be entertained.
+ *
+ * 5. Versioning
+ *
+ * The Persistent data store has a version tag to be verified during
+ * deserialization, thus a grammar pool may decide if it supports
+ * a binary data created by a different release of Xerces.
+ *
+ */
+ virtual void serializeGrammars(BinOutputStream* const) = 0;
+ virtual void deserializeGrammars(BinInputStream* const) = 0;
+
protected :
// -----------------------------------------------------------------------
/** Hidden Constructors */
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]