307 lines
12 KiB
C++
307 lines
12 KiB
C++
/*++
|
|
|
|
Copyright (c) 1998 Seagate Software, Inc. All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
HsmServ.h
|
|
|
|
Abstract:
|
|
|
|
This header file defines the CHsmServer object, which acts as the 'entry point'
|
|
for the HSM Engine.
|
|
|
|
Author:
|
|
|
|
Cat Brant [cbrant] 24-Jan-1997
|
|
|
|
Revision History:
|
|
|
|
Chris Timmes [chris.timmes] 11-Sep-1997 - Renamed FindStoragePoolById()
|
|
to FindHsmStoragePoolByMediaSetId()
|
|
and added FindHsmStoragePoolById()
|
|
|
|
Chris Timmes [chris.timmes] 22-Sep-1997 - Added FindMediaIdByDisplayName()
|
|
and RecreateMaster() methods to
|
|
IHsmServer
|
|
|
|
Chris Timmes [chris.timmes] 21-Oct-1997 - Added MarkMediaForRecreation()
|
|
method to IHsmServer
|
|
|
|
Chris Timmes [chris.timmes] 18-Nov-1997 - Added CreateTask() method to IHsmServer
|
|
|
|
--*/
|
|
|
|
#ifndef _HSMSERV_H
|
|
#define _HSMSERV_H
|
|
|
|
#include <rswriter.h>
|
|
|
|
|
|
#define ENG_DB_DIRECTORY OLESTR("EngDb")
|
|
|
|
|
|
class CHsmServer :
|
|
public CWsbPersistable,
|
|
public IHsmServer,
|
|
public IWsbServer,
|
|
public IWsbCreateLocalObject,
|
|
public CComCoClass<CHsmServer,&CLSID_HsmServer>
|
|
{
|
|
|
|
public:
|
|
CHsmServer( ) {}
|
|
BEGIN_COM_MAP( CHsmServer )
|
|
COM_INTERFACE_ENTRY( IHsmServer )
|
|
COM_INTERFACE_ENTRY2(IPersist, IPersistStream)
|
|
COM_INTERFACE_ENTRY(IPersistStream)
|
|
COM_INTERFACE_ENTRY(IPersistFile)
|
|
COM_INTERFACE_ENTRY(IWsbPersistable)
|
|
COM_INTERFACE_ENTRY( IWsbCreateLocalObject )
|
|
COM_INTERFACE_ENTRY( IWsbServer )
|
|
END_COM_MAP( )
|
|
|
|
DECLARE_NOT_AGGREGATABLE( CHsmServer)
|
|
|
|
DECLARE_REGISTRY_RESOURCEID( IDR_HsmServer )
|
|
DECLARE_PROTECT_FINAL_CONSTRUCT()
|
|
|
|
|
|
// CComObjectRoot
|
|
STDMETHOD(FinalConstruct)(void);
|
|
void FinalRelease( void );
|
|
|
|
// IPersist
|
|
public:
|
|
STDMETHOD(GetClassID)(LPCLSID pClsid);
|
|
|
|
// IPersistStream
|
|
public:
|
|
STDMETHOD(GetSizeMax)(ULARGE_INTEGER* pSize);
|
|
STDMETHOD(Load)(IStream* pStream);
|
|
STDMETHOD(Save)(IStream* pStream, BOOL clearDirty);
|
|
|
|
// IWsbServer
|
|
public:
|
|
STDMETHOD( GetId )( GUID* pId );
|
|
STDMETHOD( GetRegistryName )( OLECHAR **pRegistryName, ULONG bufferSize );
|
|
STDMETHOD( SetId )( GUID id );
|
|
STDMETHOD( GetBuildVersion )( ULONG *pBuildVersion );
|
|
STDMETHOD( GetNtProductVersion )( OLECHAR **pNtProductVersion, ULONG bufferSize );
|
|
STDMETHOD( GetNtProductBuild )( ULONG *pNtProductBuild );
|
|
STDMETHOD( GetDatabaseVersion )( ULONG *pDatabaseVersion );
|
|
STDMETHOD( SaveAll )( void );
|
|
STDMETHOD( Unload )( void );
|
|
STDMETHOD( CheckAccess )( WSB_ACCESS_TYPE AccessType );
|
|
STDMETHOD( GetTrace )( OUT IWsbTrace ** ppTrace );
|
|
STDMETHOD( SetTrace )( IN IWsbTrace *pTrace );
|
|
STDMETHOD( DestroyObject )( void );
|
|
|
|
// IHsmServer
|
|
public:
|
|
STDMETHOD( Init )( void );
|
|
|
|
STDMETHOD( GetID )( GUID *phid );
|
|
STDMETHOD( GetDbPath )( OLECHAR** pPath, ULONG bufferSize );
|
|
STDMETHOD( GetIDbPath )( OLECHAR** pPath, ULONG bufferSize );
|
|
STDMETHOD( GetDbPathAndName )( OLECHAR** pPath, ULONG bufferSize );
|
|
STDMETHOD( GetName )( OLECHAR **ppName );
|
|
|
|
STDMETHOD( GetHsmExtVerHi )( SHORT *pExtVerHi );
|
|
STDMETHOD( GetHsmExtVerLo )( SHORT *pExtVerLo );
|
|
STDMETHOD( GetHsmExtRev )( SHORT *pExtRev );
|
|
|
|
STDMETHOD( GetAutosave )( ULONG* pMilliseconds );
|
|
STDMETHOD( SetAutosave )( ULONG milliseconds );
|
|
|
|
STDMETHOD( GetCopyFilesLimit )( ULONG* pLimit );
|
|
STDMETHOD( GetCopyFilesUserLimit )( ULONG* pLimit );
|
|
STDMETHOD( SetCopyFilesUserLimit )( ULONG limit );
|
|
|
|
STDMETHOD( GetManagedResources )( IWsbIndexedCollection **ppCollection);
|
|
STDMETHOD( FindHsmStoragePoolById )( GUID StoragePoolId,
|
|
IHsmStoragePool** ppStoragePool );
|
|
STDMETHOD( FindHsmStoragePoolByMediaSetId )( GUID RmsMediaSetId,
|
|
IHsmStoragePool** ppStoragePool );
|
|
STDMETHOD( FindMediaIdByDescription )( IN OLECHAR* description,
|
|
OUT GUID* pMediaId );
|
|
STDMETHOD( FindStoragePoolByName )(OLECHAR* name, IHsmStoragePool** ppStoragePool );
|
|
STDMETHOD( GetStoragePools )( IWsbIndexedCollection **ppCollection);
|
|
STDMETHOD( GetOnlineInformation )( IWsbIndexedCollection **ppCollection);
|
|
STDMETHOD( GetMessages )( IWsbIndexedCollection **ppCollection);
|
|
STDMETHOD( GetUsrToNotify )( IWsbIndexedCollection **ppCollection);
|
|
STDMETHOD( GetJobs )( IWsbIndexedCollection **ppCollection);
|
|
STDMETHOD( FindJobByName )(OLECHAR* name, IHsmJob** ppJob );
|
|
STDMETHOD( GetJobDefs )( IWsbIndexedCollection **ppCollection);
|
|
STDMETHOD( GetPolicies )( IWsbIndexedCollection **ppCollection);
|
|
STDMETHOD( GetActions )( IWsbIndexedCollection **ppCollection);
|
|
STDMETHOD( GetCriteria )( IWsbIndexedCollection **ppCollection);
|
|
STDMETHOD( GetMediaRecs )( IWsbIndexedCollection **ppCollection);
|
|
STDMETHOD( GetMountingMedias ) ( IWsbIndexedCollection **ppCollection);
|
|
|
|
STDMETHOD( LockMountingMedias )( void );
|
|
STDMETHOD( UnlockMountingMedias )( void );
|
|
|
|
STDMETHOD( GetNextMedia )( LONG *pNextMedia );
|
|
STDMETHOD( GetSegmentDb )( IWsbDb **ppDb);
|
|
STDMETHOD( BackupSegmentDb )( void );
|
|
STDMETHOD( GetHsmFsaTskMgr )( IHsmFsaTskMgr **ppHsmFsaTskMgr);
|
|
STDMETHOD( SaveMetaData )( void );
|
|
STDMETHOD( SavePersistData )( void );
|
|
STDMETHOD( CloseOutDb )( void );
|
|
STDMETHOD( CancelAllJobs )( void );
|
|
STDMETHOD( AreJobsEnabled )( void );
|
|
STDMETHOD( EnableAllJobs )( void );
|
|
STDMETHOD( DisableAllJobs )( void );
|
|
STDMETHOD( RestartSuspendedJobs )( void );
|
|
|
|
STDMETHOD( CreateTask )( IN const OLECHAR * jobName, IN const OLECHAR * jobParameters,
|
|
IN const OLECHAR * jobComments,
|
|
IN const TASK_TRIGGER_TYPE jobTriggerType,
|
|
IN const WORD jobStartHour, IN const WORD jobStartMinute,
|
|
IN const BOOL scheduledJob );
|
|
|
|
STDMETHOD( CreateTaskEx )( IN const OLECHAR * jobName, IN const OLECHAR * jobParameters,
|
|
IN const OLECHAR * jobComments,
|
|
IN const TASK_TRIGGER_TYPE jobTriggerType,
|
|
IN const SYSTEMTIME runTime,
|
|
IN const DWORD runOccurrence,
|
|
IN const BOOL scheduledJob );
|
|
|
|
STDMETHOD( CancelCopyMedia )( void );
|
|
STDMETHOD( MarkMediaForRecreation )( IN REFGUID masterMediaId );
|
|
STDMETHOD( RecreateMaster )( IN REFGUID masterMediaId, USHORT copySet );
|
|
STDMETHOD( SynchronizeMedia )( GUID poolId, USHORT copySet );
|
|
STDMETHOD( GetHsmMediaMgr )( IRmsServer **ppHsmMediaMgr);
|
|
|
|
STDMETHOD( ResetSegmentValidMark )( void );
|
|
STDMETHOD( ResetMediaValidBytes )( void );
|
|
|
|
STDMETHOD( GetSegmentPosition )( IN REFGUID bagId,
|
|
IN LONGLONG fileStart,
|
|
IN LONGLONG fileSize,
|
|
OUT GUID* pPosMedia,
|
|
OUT LONGLONG* pPosOfffset );
|
|
// IHsmSystemState
|
|
STDMETHOD( ChangeSysState )( HSM_SYSTEM_STATE* pSysState );
|
|
|
|
// IWsbCreateLocalServer
|
|
STDMETHOD( CreateInstance )( REFCLSID rclsid, REFIID riid, void **ppv );
|
|
|
|
// Internal Helper functions
|
|
STDMETHOD( Autosave )(void);
|
|
STDMETHOD( LoadJobs )( IStream* pStream );
|
|
STDMETHOD( StoreJobs )( IStream* pStream );
|
|
STDMETHOD( LoadJobDefs )( IStream* pStream );
|
|
STDMETHOD( StoreJobDefs )( IStream* pStream );
|
|
STDMETHOD( LoadPolicies )( IStream* pStream );
|
|
STDMETHOD( StorePolicies )( IStream* pStream );
|
|
STDMETHOD( LoadManagedResources )( IStream* pStream );
|
|
STDMETHOD( StoreManagedResources )( IStream* pStream );
|
|
STDMETHOD( LoadStoragePools )( IStream* pStream );
|
|
STDMETHOD( StoreStoragePools )( IStream* pStream );
|
|
STDMETHOD( LoadSegmentInformation )( void );
|
|
STDMETHOD( StoreSegmentInformation )( void );
|
|
STDMETHOD( StoreSegmentInformationFinal )( void );
|
|
STDMETHOD( LoadMessages )( IStream* pStream );
|
|
STDMETHOD( StoreMessages )( IStream* pStream );
|
|
STDMETHOD( LoadPersistData )( void );
|
|
STDMETHOD( NotifyAllJobs )(HSM_JOB_STATE jobState);
|
|
STDMETHOD( CreateDefaultJobs )( void );
|
|
STDMETHOD( GetSavedTraceSettings )( LONGLONG *pTraceSettings, BOOLEAN *pTraceOn);
|
|
STDMETHOD( SetSavedTraceSettings )( LONGLONG traceSettings, BOOLEAN traceOn);
|
|
STDMETHOD( CheckManagedResources )( void );
|
|
STDMETHOD( InternalSavePersistData)( void );
|
|
STDMETHOD( CancelMountingMedias ) (void);
|
|
void StopAutosaveThread(void);
|
|
|
|
protected:
|
|
ULONG m_autosaveInterval; // Autosave interval in
|
|
// milliseconds; 0 turns it off
|
|
HANDLE m_autosaveThread;
|
|
HANDLE m_savingEvent; // An event for synchronizing saving of persistent data
|
|
HANDLE m_terminateEvent; // An event for signaling termination to the autosave thread
|
|
HANDLE m_CheckManagedResourcesThread;
|
|
GUID m_hId;
|
|
CWsbStringPtr m_name;
|
|
CWsbStringPtr m_dir;
|
|
BOOL m_initializationCompleted;
|
|
BOOL m_persistWasCreated; // TRUE if persistence file was created
|
|
|
|
ULONG m_traceSettings;
|
|
BOOL m_traceOn;
|
|
BOOL m_cancelCopyMedia;
|
|
BOOL m_inCopyMedia;
|
|
BOOL m_Suspended;
|
|
BOOL m_JobsEnabled; // Not persistent !!
|
|
|
|
CWsbStringPtr m_dbPath;
|
|
CComPtr<IHsmFsaTskMgr> m_pHsmFsaTskMgr;
|
|
CComPtr<IRmsServer> m_pHsmMediaMgr;
|
|
CRssJetWriter *m_pRssWriter;
|
|
|
|
CComPtr<IWsbTrace> m_pTrace;
|
|
CComPtr<IWsbDbSys> m_pDbSys;
|
|
CComPtr<IWsbDb> m_pSegmentDatabase;
|
|
CComPtr<IWsbIndexedCollection> m_pJobs;
|
|
CComPtr<IWsbIndexedCollection> m_pJobDefs;
|
|
CComPtr<IWsbIndexedCollection> m_pPolicies;
|
|
CComPtr<IWsbIndexedCollection> m_pManagedResources;
|
|
CComPtr<IWsbIndexedCollection> m_pStoragePools;
|
|
CComPtr<IWsbIndexedCollection> m_pMessages;
|
|
CComPtr<IWsbIndexedCollection> m_pOnlineInformation;
|
|
CComPtr<IWsbIndexedCollection> m_pMountingMedias;
|
|
|
|
LONG m_mediaCount;
|
|
|
|
ULONG m_buildVersion;
|
|
ULONG m_databaseVersion;
|
|
|
|
ULONG m_copyfilesUserLimit;
|
|
|
|
CRITICAL_SECTION m_JobDisableLock;
|
|
CRITICAL_SECTION m_MountingMediasLock;
|
|
};
|
|
|
|
class CHsmUpgradeRmsDb :
|
|
public CWsbPersistable,
|
|
public IHsmUpgradeRmsDb,
|
|
public CComCoClass<CHsmUpgradeRmsDb,&CLSID_CHsmUpgradeRmsDb>
|
|
{
|
|
public:
|
|
CHsmUpgradeRmsDb( ) {}
|
|
BEGIN_COM_MAP( CHsmUpgradeRmsDb )
|
|
COM_INTERFACE_ENTRY( IHsmUpgradeRmsDb )
|
|
COM_INTERFACE_ENTRY2(IPersist, IPersistStream)
|
|
COM_INTERFACE_ENTRY(IPersistStream)
|
|
COM_INTERFACE_ENTRY(IPersistFile)
|
|
COM_INTERFACE_ENTRY(IWsbPersistable)
|
|
END_COM_MAP( )
|
|
|
|
DECLARE_REGISTRY_RESOURCEID( IDR_HsmUpgradeRmsDb )
|
|
|
|
// CComObjectRoot
|
|
public:
|
|
STDMETHOD(FinalConstruct)(void);
|
|
void FinalRelease(void);
|
|
|
|
// IPersist
|
|
public:
|
|
STDMETHOD(GetClassID)(LPCLSID pclsid);
|
|
|
|
// IPersistStream
|
|
public:
|
|
STDMETHOD(GetSizeMax)(ULARGE_INTEGER* /*pSize*/) {
|
|
return(E_NOTIMPL); }
|
|
STDMETHOD(Load)(IStream* pStream);
|
|
STDMETHOD(Save)(IStream* pStream, BOOL clearDirty);
|
|
|
|
// IHsmUpgradeRmsDb
|
|
STDMETHOD(Init)( IRmsServer *pHsmMediaMgr);
|
|
|
|
private:
|
|
IRmsServer *m_pServer;
|
|
};
|
|
|
|
#endif // _HSMSERV_H
|