2019-05-03 00:29:04 +02:00
|
|
|
/*++
|
|
|
|
Copyright (c) Microsoft Corporation
|
|
|
|
Licensed under the MIT license.
|
|
|
|
|
|
|
|
Module Name:
|
|
|
|
- WaitBlock.h
|
|
|
|
|
|
|
|
Abstract:
|
|
|
|
- This file defines a queued operation when a console buffer object cannot currently satisfy the request.
|
|
|
|
|
|
|
|
Author:
|
|
|
|
- Michael Niksa (miniksa) 12-Oct-2016
|
|
|
|
|
|
|
|
Revision History:
|
|
|
|
- Adapted from original items in handle.h
|
|
|
|
--*/
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "..\host\conapi.h"
|
|
|
|
#include "IWaitRoutine.h"
|
|
|
|
#include "WaitTerminationReason.h"
|
|
|
|
|
|
|
|
#include <list>
|
|
|
|
|
|
|
|
class ConsoleWaitQueue;
|
|
|
|
|
|
|
|
class ConsoleWaitBlock
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
~ConsoleWaitBlock();
|
|
|
|
|
|
|
|
bool Notify(const WaitTerminationReason TerminationReason);
|
|
|
|
|
2019-06-11 22:27:09 +02:00
|
|
|
[[nodiscard]] static HRESULT s_CreateWait(_Inout_ CONSOLE_API_MSG* const pWaitReplymessage,
|
|
|
|
_In_ IWaitRoutine* const pWaiter);
|
2019-05-03 00:29:04 +02:00
|
|
|
|
|
|
|
private:
|
|
|
|
ConsoleWaitBlock(_In_ ConsoleWaitQueue* const pProcessQueue,
|
|
|
|
_In_ ConsoleWaitQueue* const pObjectQueue,
|
|
|
|
const CONSOLE_API_MSG* const pWaitReplyMessage,
|
|
|
|
_In_ IWaitRoutine* const pWaiter);
|
|
|
|
|
|
|
|
ConsoleWaitQueue* const _pProcessQueue;
|
|
|
|
std::_List_const_iterator<std::_List_val<std::_List_simple_types<ConsoleWaitBlock*>>> _itProcessQueue;
|
|
|
|
|
|
|
|
ConsoleWaitQueue* const _pObjectQueue;
|
|
|
|
std::_List_const_iterator<std::_List_val<std::_List_simple_types<ConsoleWaitBlock*>>> _itObjectQueue;
|
|
|
|
|
|
|
|
CONSOLE_API_MSG _WaitReplyMessage;
|
|
|
|
|
|
|
|
IWaitRoutine* const _pWaiter;
|
|
|
|
};
|