LeviLamina
Loading...
Searching...
No Matches
DeferredSubscriptionHub.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/utility/pub_sub/ConnectPosition.h"
7#include "mc/platform/brstd/move_only_function.h"
8
9// auto generated forward declare list
10// clang-format off
11namespace Bedrock::PubSub { class DeferredSubscription; }
12namespace Bedrock::PubSub { class RawSubscription; }
13// clang-format on
14
15namespace Bedrock::PubSub {
16
18public:
19 // DeferredSubscriptionHub inner types define
20 enum class HubType : int {
21 Priority = 0,
22 Fifo = 1,
23 RecursiveFIFO = 2,
24 };
25
26 using FunctionType = ::brstd::move_only_function<void()>;
27
28public:
29 // virtual functions
30 // NOLINTBEGIN
31 virtual ~DeferredSubscriptionHub() = default;
32
33 virtual uint64 runDeferredEvents(uint64 maxToRun) = 0;
34
35 virtual uint64 runDeferredEventsForDuration(::std::chrono::milliseconds msec) = 0;
36
37 virtual void flushPendingEvents() = 0;
38
39 virtual void clear() = 0;
40
41 virtual uint64 erase(::Bedrock::PubSub::RawSubscription& subscription) = 0;
42
43 virtual uint64 size() const = 0;
44
45 virtual bool empty() const = 0;
46
47 virtual ::Bedrock::PubSub::DeferredSubscriptionHub::HubType getHubType() const = 0;
48
49 virtual void _join(::Bedrock::PubSub::DeferredSubscription&& subscription) = 0;
50
51 virtual void _enqueue(
53 ::Bedrock::PubSub::ConnectPosition at,
54 ::std::optional<int> group
55 ) = 0;
56 // NOLINTEND
57
58public:
59 // static functions
60 // NOLINTBEGIN
61 MCAPI static ::std::unique_ptr<::Bedrock::PubSub::DeferredSubscriptionHub> makePriorityHub();
62 // NOLINTEND
63};
64
65} // namespace Bedrock::PubSub
Definition DeferredSubscriptionHub.h:17
Definition DeferredSubscription.h:10
Definition RawSubscription.h:10
Definition move_only_function.h:9