74 lines
2.5 KiB
C++
74 lines
2.5 KiB
C++
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
|
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
|
// PARTICULAR PURPOSE.
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// Abstract:
|
|
//
|
|
// Implement class TClientNotificationWork. A simple class to store data
|
|
// that represents work to be performed by the Threadpool to make
|
|
// callbacks into the Function Discovery client.
|
|
|
|
#include "stdafx.h"
|
|
|
|
TClientNotificationWork::TClientNotificationWork():
|
|
WorkType(OnUpdate)
|
|
{
|
|
ZeroMemory(&WorkData, sizeof(WorkData));
|
|
} // TClientNotificationWork::TClientNotificationWork
|
|
|
|
TClientNotificationWork* TClientNotificationWork::CreateClientOnErrorWork(HRESULT hr)
|
|
{
|
|
TClientNotificationWork* pClientNotificationWork = new(std::nothrow) TClientNotificationWork;
|
|
|
|
if (pClientNotificationWork)
|
|
{
|
|
pClientNotificationWork->WorkType = OnError;
|
|
pClientNotificationWork->WorkData.OnErrorWork.hr = hr;
|
|
}
|
|
|
|
return pClientNotificationWork;
|
|
} // TClientNotificationWork::CreateClientOnErrorWork
|
|
|
|
TClientNotificationWork* TClientNotificationWork::CreateClientOnEventWork(DWORD EventId)
|
|
{
|
|
TClientNotificationWork* pClientNotificationWork = new(std::nothrow) TClientNotificationWork;
|
|
|
|
if (pClientNotificationWork)
|
|
{
|
|
pClientNotificationWork->WorkType = OnEvent;
|
|
pClientNotificationWork->WorkData.OnEventWork.EventId = EventId;
|
|
}
|
|
|
|
return pClientNotificationWork;
|
|
} // TClientNotificationWork::CreateClientOnEventWork
|
|
|
|
TClientNotificationWork* TClientNotificationWork::CreateClientOnUpdateWork(
|
|
QueryUpdateAction QueryUpdateAction,
|
|
__in TFunctionInstanceInfo* pFunctionInstanceInfo)
|
|
{
|
|
TClientNotificationWork* pClientNotificationWork = new(std::nothrow) TClientNotificationWork;
|
|
|
|
if (pClientNotificationWork)
|
|
{
|
|
pFunctionInstanceInfo->AddRef();
|
|
|
|
pClientNotificationWork->WorkType = OnUpdate;
|
|
pClientNotificationWork->WorkData.OnUpdateWork.QueryUpdateAction = QueryUpdateAction;
|
|
pClientNotificationWork->WorkData.OnUpdateWork.pFunctionInstanceInfo = pFunctionInstanceInfo;
|
|
}
|
|
|
|
return pClientNotificationWork;
|
|
} // TClientNotificationWork::CreateClientOnUpdateWork
|
|
|
|
TClientNotificationWork::~TClientNotificationWork()
|
|
{
|
|
if (OnUpdate == WorkType)
|
|
{
|
|
WorkData.OnUpdateWork.pFunctionInstanceInfo->Release();
|
|
WorkData.OnUpdateWork.pFunctionInstanceInfo = NULL;
|
|
}
|
|
|
|
} // TClientNotificationWork::~TClientNotificationWork
|