2025-11-28 00:35:46 +09:00

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