/*++ © 1998 Seagate Software, Inc. All rights reserved. Module Name: hsmjobcx.cpp Abstract: This class contains properties that defines the context in which the job should be run. Author: Chuck Bardeen [cbardeen] 29-Oct-1996 Revision History: --*/ #include "stdafx.h" #include "wsb.h" #include "job.h" #include "hsmjobcx.h" #define WSB_TRACE_IS WSB_TRACE_BIT_JOB static USHORT iCount = 0; HRESULT CHsmJobContext::EnumResources( IWsbEnum** ppEnum ) /*++ Implements: IHsmJobContext::EnumResources(). --*/ { HRESULT hr = S_OK; try { WsbAssert(0 != ppEnum, E_POINTER); WsbAffirmHr(m_pResources->Enum(ppEnum)); } WsbCatch(hr); return(hr); } HRESULT CHsmJobContext::FinalConstruct( void ) /*++ Implements: CComObjectRoot::FinalConstruct(). --*/ { HRESULT hr = S_OK; WsbTraceIn(OLESTR("CHsmJobContext::FinalConstruct"), OLESTR("")); try { m_usesAllManaged = FALSE; //Create the Resources collection (with no items). WsbAffirmHr(CWsbObject::FinalConstruct()); WsbAffirmHr(CoCreateInstance(CLSID_CWsbOrderedCollection, NULL, CLSCTX_ALL, IID_IWsbCollection, (void**) &m_pResources)); } WsbCatch(hr); iCount++; WsbTraceOut(OLESTR("CHsmJobContext::FinalConstruct"), OLESTR("hr = <%ls>, Count is <%d>"), WsbHrAsString(hr), iCount); return(hr); } void CHsmJobContext::FinalRelease( void ) /*++ Implements: CHsmJobContext::FinalRelease(). --*/ { WsbTraceIn(OLESTR("CHsmJobContext::FinalRelease"), OLESTR("")); CWsbObject::FinalRelease(); iCount--; WsbTraceOut(OLESTR("CHsmJobContext:FinalRelease"), OLESTR("Count is <%d>"), iCount); } HRESULT CHsmJobContext::GetClassID( OUT CLSID* pClsid ) /*++ Implements: IPersist::GetClassID(). --*/ { HRESULT hr = S_OK; WsbTraceIn(OLESTR("CHsmJobContext::GetClassID"), OLESTR("")); try { WsbAssert(0 != pClsid, E_POINTER); *pClsid = CLSID_CHsmJobContext; } WsbCatch(hr); WsbTraceOut(OLESTR("CHsmJobContext::GetClassID"), OLESTR("hr = <%ls>, CLSID = <%ls>"), WsbHrAsString(hr), WsbGuidAsString(*pClsid)); return(hr); } HRESULT CHsmJobContext::GetSizeMax( OUT ULARGE_INTEGER* pSize ) /*++ Implements: IPersistStream::GetSizeMax(). --*/ { HRESULT hr = S_OK; CComPtr pPersistStream; WsbTraceIn(OLESTR("CHsmJobContext::GetSizeMax"), OLESTR("")); try { WsbAffirmHr(m_pResources->QueryInterface(IID_IPersistStream, (void**) &pPersistStream)); WsbAffirmHr(pPersistStream->GetSizeMax(pSize)); pSize->QuadPart += WsbPersistSizeOf(BOOL); } WsbCatch(hr); WsbTraceOut(OLESTR("CHsmJobContext::GetSizeMax"), OLESTR("hr = <%ls>, Size = <%ls>"), WsbHrAsString(hr), WsbPtrToUliAsString(pSize)); return(hr); } HRESULT CHsmJobContext::Load( IN IStream* pStream ) /*++ Implements: IPersistStream::Load(). --*/ { HRESULT hr = S_OK; CComPtr pPersistStream; WsbTraceIn(OLESTR("CHsmJobContext::Load"), OLESTR("")); try { WsbAssert(0 != pStream, E_POINTER); WsbLoadFromStream(pStream, &m_usesAllManaged); WsbAffirmHr(m_pResources->QueryInterface(IID_IPersistStream, (void**) &pPersistStream)); WsbAffirmHr(pPersistStream->Load(pStream)); } WsbCatch(hr); WsbTraceOut(OLESTR("CHsmJobContext::Load"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); } HRESULT CHsmJobContext::Resources( IWsbCollection** ppResources ) /*++ Implements: IHsmJobContext::Resources(). --*/ { HRESULT hr = S_OK; try { WsbAssert(0 != ppResources, E_POINTER); *ppResources = m_pResources; m_pResources.p->AddRef(); } WsbCatch(hr); return(hr); } HRESULT CHsmJobContext::Save( IN IStream* pStream, IN BOOL clearDirty ) /*++ Implements: IPersistStream::Save(). --*/ { HRESULT hr = S_OK; CComPtr pPersistStream; WsbTraceIn(OLESTR("CHsmJobContext::Save"), OLESTR("clearDirty = <%ls>"), WsbBoolAsString(clearDirty)); try { WsbAssert(0 != pStream, E_POINTER); WsbSaveToStream(pStream, m_usesAllManaged); WsbAffirmHr(m_pResources->QueryInterface(IID_IPersistStream, (void**) &pPersistStream)); WsbAffirmHr(pPersistStream->Save(pStream, clearDirty)); // If we got it saved and we were asked to clear the dirty bit, then // do so now. if (clearDirty) { m_isDirty = FALSE; } } WsbCatch(hr); WsbTraceOut(OLESTR("CHsmJobContext::Save"), OLESTR("hr = <%ls>"), WsbHrAsString(hr)); return(hr); } HRESULT CHsmJobContext::Test( USHORT* passed, USHORT* failed ) /*++ Implements: IWsbTestable::Test(). --*/ { HRESULT hr = S_OK; try { WsbAssert(0 != passed, E_POINTER); WsbAssert(0 != failed, E_POINTER); *passed = 0; *failed = 0; } WsbCatch(hr); return(hr); } HRESULT CHsmJobContext::SetUsesAllManaged( IN BOOL usesAllManaged ) /*++ Implements: IHsmJobContext::SetUsesAllManaged(). --*/ { m_usesAllManaged = usesAllManaged; return(S_OK); } HRESULT CHsmJobContext::UsesAllManaged( void ) /*++ Implements: IHsmJobContext::UsesAllManaged(). --*/ { return(m_usesAllManaged ? S_OK : S_FALSE); }