mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
150 lines
5.3 KiB
150 lines
5.3 KiB
#ifndef _HSMSESS_
|
|
#define _HSMSESS_
|
|
|
|
/*++
|
|
|
|
© 1998 Seagate Software, Inc. All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
hsmsess.h
|
|
|
|
Abstract:
|
|
|
|
This module contains the session component. The session is the collator of information for the work being done on
|
|
a resource (for a job, demand recall, truncate, ...).
|
|
|
|
Author:
|
|
|
|
Chuck Bardeen [cbardeen] 18-Feb-1997
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#include "resource.h" // main symbols
|
|
|
|
#include "wsb.h"
|
|
#include "fsa.h"
|
|
#include "job.h"
|
|
|
|
/*++
|
|
|
|
Class Name:
|
|
|
|
CHsmSession
|
|
|
|
Class Description:
|
|
|
|
The session is the collator of information for the work being done on a resource (for a job, demand recall,
|
|
truncate, ...).
|
|
|
|
--*/
|
|
|
|
class CHsmSession :
|
|
public CWsbObject,
|
|
public IHsmSession,
|
|
public CComCoClass<CHsmSession,&CLSID_CHsmSession>,
|
|
public IConnectionPointContainerImpl<CHsmSession>,
|
|
public IConnectionPointImpl<CHsmSession, &IID_IHsmSessionSinkEveryEvent, CComDynamicUnkArray>,
|
|
public IConnectionPointImpl<CHsmSession, &IID_IHsmSessionSinkEveryItem, CComDynamicUnkArray>,
|
|
public IConnectionPointImpl<CHsmSession, &IID_IHsmSessionSinkEveryMediaState, CComDynamicUnkArray>,
|
|
public IConnectionPointImpl<CHsmSession, &IID_IHsmSessionSinkEveryPriority, CComDynamicUnkArray>,
|
|
public IConnectionPointImpl<CHsmSession, &IID_IHsmSessionSinkEveryState, CComDynamicUnkArray>,
|
|
public IConnectionPointImpl<CHsmSession, &IID_IHsmSessionSinkSomeItems, CComDynamicUnkArray>
|
|
{
|
|
public:
|
|
CHsmSession() {}
|
|
|
|
BEGIN_COM_MAP(CHsmSession)
|
|
COM_INTERFACE_ENTRY(IHsmSession)
|
|
COM_INTERFACE_ENTRY2(IPersist, IPersistStream)
|
|
COM_INTERFACE_ENTRY(IPersistStream)
|
|
COM_INTERFACE_ENTRY(IWsbCollectable)
|
|
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
|
|
COM_INTERFACE_ENTRY(IWsbTestable)
|
|
END_COM_MAP()
|
|
|
|
BEGIN_CONNECTION_POINT_MAP(CHsmSession)
|
|
CONNECTION_POINT_ENTRY(IID_IHsmSessionSinkEveryEvent)
|
|
CONNECTION_POINT_ENTRY(IID_IHsmSessionSinkEveryItem)
|
|
CONNECTION_POINT_ENTRY(IID_IHsmSessionSinkEveryMediaState)
|
|
CONNECTION_POINT_ENTRY(IID_IHsmSessionSinkEveryPriority)
|
|
CONNECTION_POINT_ENTRY(IID_IHsmSessionSinkEveryState)
|
|
CONNECTION_POINT_ENTRY(IID_IHsmSessionSinkSomeItems)
|
|
END_CONNECTION_POINT_MAP()
|
|
|
|
DECLARE_REGISTRY_RESOURCEID(IDR_CHsmSession)
|
|
|
|
// CComObjectRoot
|
|
public:
|
|
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);
|
|
|
|
// CHsmSession
|
|
STDMETHOD(AdviseOfEvent)(HSM_JOB_PHASE phase, HSM_JOB_EVENT event);
|
|
STDMETHOD(AdviseOfItem)(IHsmPhase* pPhase, IFsaScanItem* pScanItem, HRESULT hrItem, IHsmSessionTotals* pSessionTotals);
|
|
STDMETHOD(AdviseOfMediaState)(IHsmPhase* pPhase, HSM_JOB_MEDIA_STATE state, OLECHAR* mediaName, HSM_JOB_MEDIA_TYPE mediaType, ULONG time);
|
|
STDMETHOD(AdviseOfPriority)(IHsmPhase* pPhase);
|
|
STDMETHOD(AdviseOfState)(IHsmPhase* pPhase, OLECHAR* currentPath);
|
|
|
|
// IWsbTestable
|
|
public:
|
|
STDMETHOD(Test)(USHORT *passed, USHORT* failed);
|
|
|
|
// IHsmSession
|
|
public:
|
|
STDMETHOD(Cancel)(HSM_JOB_PHASE phase);
|
|
STDMETHOD(EnumPhases)(IWsbEnum** ppEnum);
|
|
STDMETHOD(EnumTotals)(IWsbEnum** ppEnum);
|
|
STDMETHOD(GetAdviseInterval)(LONGLONG* pFiletimeTicks);
|
|
STDMETHOD(GetHsmId)(GUID* pId);
|
|
STDMETHOD(GetIdentifier)(GUID* pId);
|
|
STDMETHOD(GetJob)(IHsmJob** pJob);
|
|
STDMETHOD(GetName)(OLECHAR** pName, ULONG bufferSize);
|
|
STDMETHOD(GetResource)(IFsaResource** pResource);
|
|
STDMETHOD(GetRunId)(ULONG* pRunId);
|
|
STDMETHOD(GetSubRunId)(ULONG* pRunId);
|
|
STDMETHOD(IsCanceling)(void);
|
|
STDMETHOD(Pause)(HSM_JOB_PHASE phase);
|
|
STDMETHOD(ProcessEvent)(HSM_JOB_PHASE phase, HSM_JOB_EVENT event);
|
|
STDMETHOD(ProcessHr)(HSM_JOB_PHASE phase, CHAR* file, ULONG line, HRESULT hr);
|
|
STDMETHOD(ProcessItem)(HSM_JOB_PHASE phase, HSM_JOB_ACTION action, IFsaScanItem* pScanItem, HRESULT hrItem);
|
|
STDMETHOD(ProcessMediaState)(HSM_JOB_PHASE phase, HSM_JOB_MEDIA_STATE state, OLECHAR* mediaName, HSM_JOB_MEDIA_TYPE mediaType, ULONG time);
|
|
STDMETHOD(ProcessPriority)(HSM_JOB_PHASE phase, HSM_JOB_PRIORITY priority);
|
|
STDMETHOD(ProcessState)(HSM_JOB_PHASE phase, HSM_JOB_STATE state, OLECHAR* currentPath, BOOL bLog);
|
|
STDMETHOD(ProcessString)(HSM_JOB_PHASE phase, OLECHAR* string);
|
|
STDMETHOD(Resume)(HSM_JOB_PHASE phase);
|
|
STDMETHOD(SetAdviseInterval)(LONGLONG filetimeTicks);
|
|
STDMETHOD(Start)(OLECHAR* name, ULONG logControl, GUID hsmId, IHsmJob* pJob, IFsaResource* pResource, ULONG runId, ULONG subRunId);
|
|
STDMETHOD(Suspend)(HSM_JOB_PHASE phase);
|
|
|
|
protected:
|
|
GUID m_id;
|
|
CWsbStringPtr m_name;
|
|
GUID m_hsmId;
|
|
LONGLONG m_adviseInterval;
|
|
ULONG m_runId;
|
|
ULONG m_subRunId;
|
|
FILETIME m_lastAdviseFile;
|
|
HSM_JOB_STATE m_state;
|
|
ULONG m_activePhases;
|
|
ULONG m_logControl;
|
|
CComPtr<IHsmJob> m_pJob;
|
|
CComPtr<IFsaResource> m_pResource;
|
|
CComPtr<IWsbCollection> m_pPhases;
|
|
CComPtr<IWsbCollection> m_pTotals;
|
|
BOOL m_isCanceling;
|
|
};
|
|
|
|
#endif // _HSMSESS_
|