|
|
/*++
� 1998 Seagate Software, Inc. All rights reserved.
Module Name:
hsmworki.cpp
Abstract:
This class represents an HSM work item - a unit of work that is performed by the HSM engine
Author:
Cat Brant [cbrant] 5-May-1997
Revision History:
--*/
#include "stdafx.h"
#define WSB_TRACE_IS WSB_TRACE_BIT_HSMTSKMGR
#include "wsb.h"
#include "fsa.h"
#include "task.h"
#include "hsmworki.h"
static USHORT iCount = 0;
HRESULT CHsmWorkItem::CompareTo( IN IUnknown* pUnknown, OUT SHORT* pResult )
/*++
Implements:
IWsbCollectable::CompareTo().
--*/ { HRESULT hr = S_OK; CComPtr<IHsmWorkItem> pWorkItem;
WsbTraceIn(OLESTR("CHsmWorkItem::CompareTo"), OLESTR("")); try {
// Did they give us a valid item to compare to?
WsbAssert(0 != pUnknown, E_POINTER);
// We need the IHsmWorkItem interface to get the value of the object.
WsbAffirmHr(pUnknown->QueryInterface(IID_IHsmWorkItem, (void**) &pWorkItem));
// Compare the items
hr = CompareToIHsmWorkItem(pWorkItem, pResult);
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmWorkItem::CompareTo"), OLESTR("hr = <%ls>, result = <%ls>"), WsbHrAsString(hr), WsbPtrToShortAsString(pResult));
return(hr); }
HRESULT CHsmWorkItem::CompareToIHsmWorkItem( IN IHsmWorkItem* pWorkItem, OUT SHORT* pResult )
/*++
Implements:
IHsmWorkItem::CompareToIHsmWorkItem().
--*/ { HRESULT hr = S_OK; GUID l_Id; // Type of work to do
WsbTraceIn(OLESTR("CHsmWorkItem::CompareToIHsmWorkItem"), OLESTR(""));
try { //
// Did they give us a valid item to compare to?
//
WsbAssert(0 != pWorkItem, E_POINTER); //
// Get the ID
//
WsbAffirmHr(pWorkItem->GetId(&l_Id));
if (l_Id != m_MyId){ hr = S_FALSE; } // If they asked for the relative value back, then return it to them.
if (pResult != NULL) { if (S_OK == hr) { *pResult = 0; } else { *pResult = 1; } } } WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmWorkItem::CompareToIHsmWorkItem"), OLESTR("hr = <%ls>, result = <%ls>"), WsbHrAsString(hr), WsbPtrToShortAsString(pResult));
return(hr); }
HRESULT CHsmWorkItem::FinalConstruct( void )
/*++
Implements:
CComObjectRoot::FinalConstruct().
--*/ { HRESULT hr = S_OK; WsbTraceIn(OLESTR("CHsmWorkItem::FinalConstruct"), OLESTR("")); try {
WsbAffirmHr(CWsbObject::FinalConstruct()); //
// The comparison for database searches is based on the
// ID of this object (m_MyId).
//
WsbAffirmHr(CoCreateGuid(&m_MyId)); m_WorkType = HSM_WORK_ITEM_NONE; m_MediaId = GUID_NULL; m_MediaLastUpdate = WsbLLtoFT(0); m_MediaLastError = S_OK; m_MediaRecallOnly = FALSE; m_MediaFreeBytes = 0;
} WsbCatch(hr);
iCount++; WsbTraceOut(OLESTR("CHsmWorkItem::FinalConstruct"), OLESTR("hr = <%ls>, Count is <%d>"), WsbHrAsString(hr), iCount); return(hr); }
void CHsmWorkItem::FinalRelease( void )
/*++
Implements:
CComObjectRoot::FinalRelease().
--*/ {
WsbTraceIn(OLESTR("CHsmWorkItem::FinalRelease"), OLESTR("")); // Let the parent class do his thing.
CWsbObject::FinalRelease(); iCount--; WsbTraceOut(OLESTR("CHsmWorkItem::FinalRelease"), OLESTR("Count is <%d>"), iCount); }
HRESULT CHsmWorkItem::GetFsaPostIt ( OUT IFsaPostIt **ppFsaPostIt )
/*++
Implements:
IHsmWorkItem::GetFsaPostIt
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmWorkItem::GetFsaPostIt"), OLESTR(""));
try {
// Did they give us a valid pointer?
WsbAssert(0 != ppFsaPostIt, E_POINTER); *ppFsaPostIt = m_pFsaPostIt; if (0 != *ppFsaPostIt) { (*ppFsaPostIt)->AddRef(); }
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmWorkItem::GetFsaPostIt"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmWorkItem::GetFsaResource ( OUT IFsaResource **ppFsaResource )
/*++
Implements:
IHsmWorkItem::GetFsaResource
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmWorkItem::GetFsaResource"), OLESTR(""));
try {
// Did they give us a valid pointer?
WsbAssert(0 != ppFsaResource, E_POINTER); *ppFsaResource = m_pFsaResource; if (0 != *ppFsaResource) { (*ppFsaResource)->AddRef(); }
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmWorkItem::GetFsaResource"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmWorkItem::GetId( OUT GUID *pId )
/*++
Implements:
IHsmWorkItem::GetId().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmWorkItem::GetId"), OLESTR(""));
try {
// Did they give us a valid pointer?
WsbAssert(0 != pId, E_POINTER); *pId = m_MyId;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmWorkItem::GetId"), OLESTR("hr = <%ls>, Id = <%ls>"), WsbHrAsString(hr), WsbPtrToGuidAsString(pId));
return(hr); }
HRESULT CHsmWorkItem::GetMediaInfo ( OUT GUID *pMediaId, OUT FILETIME *pMediaLastUpdate, OUT HRESULT *pMediaLastError, OUT BOOL *pMediaRecallOnly, OUT LONGLONG *pMediaFreeBytes, OUT short *pMediaRemoteDataSet )
/*++
Implements:
IHsmWorkItem::GetMediaInfo
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmWorkItem::GetMediaInfo"), OLESTR(""));
try {
// Did they give us valid pointers?
WsbAssert(0 != pMediaId, E_POINTER); WsbAssert(0 != pMediaLastUpdate, E_POINTER); WsbAssert(0 != pMediaLastError, E_POINTER); WsbAssert(0 != pMediaRecallOnly, E_POINTER); WsbAssert(0 != pMediaFreeBytes, E_POINTER); WsbAssert(0 != pMediaRemoteDataSet, E_POINTER); *pMediaId = m_MediaId; *pMediaLastUpdate = m_MediaLastUpdate; *pMediaLastError = m_MediaLastError; *pMediaRecallOnly = m_MediaRecallOnly; *pMediaFreeBytes = m_MediaFreeBytes; *pMediaRemoteDataSet = m_MediaRemoteDataSet;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmWorkItem::GetMediaInfo"), OLESTR("hr = <%ls>, Id = <%ls>, LastUpdate = <%ls>, LastError = <%ls>, Recall Only = <%ls>, Free Bytes = <%ls>, RemoteDataSet = <%ls>"), WsbHrAsString(hr), WsbPtrToGuidAsString(pMediaId), WsbPtrToFiletimeAsString(FALSE, pMediaLastUpdate), WsbPtrToHrAsString(pMediaLastError), WsbPtrToBoolAsString(pMediaRecallOnly), WsbPtrToLonglongAsString(pMediaFreeBytes), WsbPtrToShortAsString(pMediaRemoteDataSet));
return(hr); }
HRESULT CHsmWorkItem::GetResult( OUT HRESULT *pHr )
/*++
Implements:
IHsmWorkItem::GetResult().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmWorkItem::GetResult"), OLESTR(""));
try {
// Did they give us a valid pointer?
WsbAssert(0 != pHr, E_POINTER); *pHr = m_WorkResult;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmWorkItem::GetResult"), OLESTR("hr = <%ls>, Result = <%ls>"), WsbHrAsString(hr), WsbPtrToHrAsString(pHr));
return(hr); }
HRESULT CHsmWorkItem::GetWorkType( OUT HSM_WORK_ITEM_TYPE *pWorkType )
/*++
Implements:
IHsmWorkItem::GetWorkType().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmWorkItem::GetWorkType"), OLESTR(""));
try {
// Did they give us a valid pointer?
WsbAssert(0 != pWorkType, E_POINTER); *pWorkType = m_WorkType;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmWorkItem::GetWorkType"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmWorkItem::SetFsaPostIt ( IN IFsaPostIt *pFsaPostIt )
/*++
Implements:
IHsmWorkItem::SetFsaPostIt
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmWorkItem::SetFsaPostIt"), OLESTR(""));
try {
// Did they give us a valid pointer?
WsbAssert(0 != pFsaPostIt, E_POINTER); m_pFsaPostIt = pFsaPostIt;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmWorkItem::SetFsaPostIt"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmWorkItem::SetFsaResource ( IN IFsaResource *pFsaResource )
/*++
Implements:
IHsmWorkItem::SetFsaResource
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmWorkItem::SetFsaResource"), OLESTR(""));
try {
// Did they give us a valid pointer?
WsbAssert(0 != pFsaResource, E_POINTER); m_pFsaResource = pFsaResource;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmWorkItem::SetFsaResource"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmWorkItem::SetMediaInfo ( IN GUID mediaId, IN FILETIME mediaLastUpdate, IN HRESULT mediaLastError, IN BOOL mediaRecallOnly, IN LONGLONG mediaFreeBytes, IN short mediaRemoteDataSet )
/*++
Implements:
IHsmWorkItem::SetMediaInfo
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmWorkItem::SetMediaInfo"), OLESTR("Id = <%ls>, LastUpdate = <%ls>, LastError = <%ls>, Recall Only = <%ls>, Free Bytes = <%ls>, RemoteDataSet = <%d>"), WsbGuidAsString(mediaId), WsbFiletimeAsString(FALSE, mediaLastUpdate), WsbHrAsString(mediaLastError), WsbBoolAsString(mediaRecallOnly), WsbLonglongAsString(mediaFreeBytes), mediaRemoteDataSet);
try { m_MediaId = mediaId; m_MediaLastUpdate = mediaLastUpdate; m_MediaLastError = mediaLastError; m_MediaRecallOnly = mediaRecallOnly; m_MediaFreeBytes = mediaFreeBytes; m_MediaRemoteDataSet = mediaRemoteDataSet;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmWorkItem::GetMediaInfo"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmWorkItem::SetResult( IN HRESULT workResult )
/*++
Implements:
IHsmWorkItem::GetResult().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmWorkItem::SetResult"), OLESTR("Result is <%ls>"), WsbHrAsString(workResult));
try { m_WorkResult = workResult;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmWorkItem::GetResult"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmWorkItem::SetWorkType( IN HSM_WORK_ITEM_TYPE workType )
/*++
Implements:
IHsmWorkItem::SetWorkType().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmWorkItem::SetWorkType"), OLESTR(""));
m_WorkType = workType;
WsbTraceOut(OLESTR("CHsmWorkItem::SetWorkType"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmWorkItem::GetClassID ( OUT LPCLSID pclsid ) /*++
Routine Description:
See IPerist::GetClassID()
Arguments:
See IPerist::GetClassID()
Return Value:
See IPerist::GetClassID()
--*/
{ HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmWorkItem::GetClassID"), OLESTR(""));
try { WsbAssert(0 != pclsid, E_POINTER);
*pclsid = CLSID_CHsmWorkItem;
} WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmWorkItem::GetClassID"), OLESTR("hr = <%ls>, CLSID = <%ls>"), WsbHrAsString(hr), WsbGuidAsString(*pclsid)); return(hr); }
HRESULT CHsmWorkItem::GetSizeMax ( OUT ULARGE_INTEGER* pcbSize ) /*++
Routine Description:
See IPersistStream::GetSizeMax().
Arguments:
See IPersistStream::GetSizeMax().
Return Value:
See IPersistStream::GetSizeMax().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmWorkItem::GetSizeMax"), OLESTR(""));
try { WsbAssert(0 != pcbSize, E_POINTER);
pcbSize->QuadPart = 0; hr = E_NOTIMPL; } WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmWorkItem::GetSizeMax"), OLESTR("hr = <%ls>, Size = <%ls>"), WsbHrAsString(hr), WsbPtrToUliAsString(pcbSize));
return(hr); }
HRESULT CHsmWorkItem::Load ( IN IStream* /*pStream*/ ) /*++
Routine Description:
See IPersistStream::Load().
Arguments:
See IPersistStream::Load().
Return Value:
See IPersistStream::Load().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmWorkItem::Load"), OLESTR(""));
try { hr = E_NOTIMPL;
} WsbCatch(hr); WsbTraceOut(OLESTR("CHsmWorkItem::Load"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmWorkItem::Save ( IN IStream* pStream, IN BOOL clearDirty ) /*++
Routine Description:
See IPersistStream::Save().
Arguments:
See IPersistStream::Save().
Return Value:
See IPersistStream::Save().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmWorkItem::Save"), OLESTR("clearDirty = <%ls>"), WsbBoolAsString(clearDirty));
try { WsbAssert(0 != pStream, E_POINTER); hr = E_NOTIMPL;
// 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("CHsmWorkItem::Save"), OLESTR("hr = <%ls>"), WsbHrAsString(hr));
return(hr); }
HRESULT CHsmWorkItem::Test ( OUT USHORT *pTestsPassed, OUT USHORT *pTestsFailed ) /*++
Routine Description:
See IWsbTestable::Test().
Arguments:
See IWsbTestable::Test().
Return Value:
See IWsbTestable::Test().
--*/ { HRESULT hr = S_OK;
WsbTraceIn(OLESTR("CHsmWorkItem::Test"), OLESTR(""));
*pTestsPassed = *pTestsFailed = 0; try { hr = E_NOTIMPL; } WsbCatch(hr);
WsbTraceOut(OLESTR("CHsmWorkItem::Test"), OLESTR("hr = <%ls>"),WsbHrAsString(hr)); return( hr ); }
|