From 73d445e34b419d395935babbea9a75d1621a125a Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Fri, 7 Feb 2014 15:44:21 +0000 Subject: Add a BackupProtocolLocal2 convenience class. Adds a nicer constructor and more helpful cleanup on QueryFinished() to the auto-generated BackupProtocolLocal. --- lib/backupstore/BackupProtocol.h | 57 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 lib/backupstore/BackupProtocol.h (limited to 'lib/backupstore') diff --git a/lib/backupstore/BackupProtocol.h b/lib/backupstore/BackupProtocol.h new file mode 100644 index 00000000..d2fe8b7f --- /dev/null +++ b/lib/backupstore/BackupProtocol.h @@ -0,0 +1,57 @@ +// -------------------------------------------------------------------------- +// +// File +// Name: BackupProtocol.h +// Purpose: A thin wrapper around autogen_BackupProtocol.h +// Created: 2014/01/05 +// +// -------------------------------------------------------------------------- + +#ifndef BACKUPPROTOCOL__H +#define BACKUPPROTOCOL__H + +#include +#include +#include + +// -------------------------------------------------------------------------- +// +// Class +// Name: BackupProtocolLocal2 +// Purpose: BackupProtocolLocal with a few more IQ points +// Created: 2003/08/21 +// +// -------------------------------------------------------------------------- +class BackupProtocolLocal2 : public BackupProtocolLocal +{ +private: + BackupStoreContext mContext; + +public: + BackupProtocolLocal2(int32_t AccountNumber, + const std::string& ConnectionDetails, + const std::string& AccountRootDir, int DiscSetNumber, + bool ReadOnly) + // This is rather ugly: the BackupProtocolLocal constructor must not + // touch the Context, because it's not initialised yet! + : BackupProtocolLocal(mContext), + mContext(AccountNumber, *(HousekeepingInterface *)NULL, + ConnectionDetails) + { + mContext.SetClientHasAccount(AccountRootDir, DiscSetNumber); + QueryVersion(BACKUP_STORE_SERVER_VERSION); + QueryLogin(0x01234567, + ReadOnly ? BackupProtocolLogin::Flags_ReadOnly : 0); + } + virtual ~BackupProtocolLocal2() { } + + std::auto_ptr Query(const BackupProtocolFinished &rQuery) + { + std::auto_ptr finished = + BackupProtocolLocal::Query(rQuery); + mContext.ReleaseWriteLock(); + return finished; + } +}; + +#endif // BACKUPPROTOCOL__H -- cgit v1.2.3