Changeset View
Changeset View
Standalone View
Standalone View
source/ps/Execution/InlineExecutor.h
- This file was added.
/* Copyright (C) 2022 Wildfire Games. | |||||
* This file is part of 0 A.D. | |||||
* | |||||
* 0 A.D. is free software: you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation, either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* 0 A.D. is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU General Public License | |||||
* along with 0 A.D. If not, see <http://www.gnu.org/licenses/>. | |||||
*/ | |||||
#ifndef INCLUDED_EXECUTION_INLINE_EXECUTOR | |||||
#define INCLUDED_EXECUTION_INLINE_EXECUTOR | |||||
// Inline executor: not really useful -> for testing | |||||
namespace PS | |||||
{ | |||||
namespace Execution | |||||
{ | |||||
namespace Inline | |||||
{ | |||||
template<typename FirstReceiver> | |||||
class OperationState | |||||
{ | |||||
public: | |||||
explicit OperationState(FirstReceiver&& recv) : | |||||
m_Recv{std::forward<FirstReceiver>(recv)} | |||||
{} | |||||
void Start() | |||||
{ | |||||
m_Recv.SetValue(); | |||||
} | |||||
private: | |||||
FirstReceiver m_Recv; | |||||
}; | |||||
class Sender | |||||
{ | |||||
public: | |||||
using ResultType = void; | |||||
template<typename FirstReceiver> | |||||
OperationState<FirstReceiver> Connect(FirstReceiver&& recv) const | |||||
{ | |||||
return OperationState(std::forward<FirstReceiver>(recv)); | |||||
} | |||||
}; | |||||
class Scheduler | |||||
{ | |||||
public: | |||||
constexpr Sender Schedule() const | |||||
{ | |||||
return Sender{}; | |||||
} | |||||
}; | |||||
} // Inline | |||||
constexpr Inline::Scheduler thisThread; | |||||
} | |||||
} | |||||
#endif // INCLUDED_EXECUTION_INLINE_EXECUTOR |
Wildfire Games · Phabricator