#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, public IConnectionPointContainerImpl, public IConnectionPointImpl, public IConnectionPointImpl, public IConnectionPointImpl, public IConnectionPointImpl, public IConnectionPointImpl, public IConnectionPointImpl { 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 m_pJob; CComPtr m_pResource; CComPtr m_pPhases; CComPtr m_pTotals; BOOL m_isCanceling; }; #endif // _HSMSESS_