+ * A "context" for accessing a StorageService instance.\r
+ * Handles are created and freed using the StorageService interface,\r
+ * and can be kept for the life of the service, and shared by multiple\r
+ * threads.\r
+ */\r
+ class XMLTOOL_API StorageHandle {\r
+ MAKE_NONCOPYABLE(StorageHandle);\r
+ friend class XMLTOOL_API StorageService;\r
+ public:\r
+ virtual ~StorageHandle() {}\r
+ protected:\r
+ StorageHandle(StorageService* storage) : m_storage(storage) {}\r
+ StorageService* m_storage;\r
+ };\r
+ \r
+ \r
+ /**\r
+ * Returns a new handle for the storage service.\r
+ * The caller <strong>MUST</strong> delete the handle\r
+ * before freeing the StorageService itself.\r
+ * \r
+ * @return a new handle\r
+ */\r
+ virtual StorageHandle* createHandle()=0;\r
+ \r
+ /**\r