LeviLamina
Loading...
Searching...
No Matches
BatchedNetworkPeer.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4#include "mc/deps/core/threading/SPSCQueue.h"
5#include "mc/deps/core/threading/TaskGroup.h"
6#include "mc/deps/core/utility/BinaryStream.h"
7
8// auto generated inclusion list
9#include "mc/deps/core/threading/SPSCQueue.h"
10#include "mc/deps/core/utility/BinaryStream.h"
11#include "mc/deps/core/utility/ReadOnlyBinaryStream.h"
12#include "mc/network/Compressibility.h"
13#include "mc/network/NetworkPeer.h"
14
15// auto generated forward declare list
16// clang-format off
17class Scheduler;
18class TaskGroup;
19// clang-format on
20
21class BatchedNetworkPeer : public ::NetworkPeer {
22public:
23 // BatchedNetworkPeer inner types declare
24 // clang-format off
25 struct DataCallback;
26 // clang-format on
27
28 // BatchedNetworkPeer inner types define
29 struct DataCallback {
30 public:
31 // member variables
32 // NOLINTBEGIN
33 ::ll::TypedStorage<8, 32, ::std::string> data;
34 ::ll::TypedStorage<4, 4, ::Compressibility> compressible;
35 ::ll::TypedStorage<8, 64, ::std::function<void()>> callback;
36 // NOLINTEND
37 };
38
39public:
40 // member variables
41 // NOLINTBEGIN
42 ::ll::TypedStorage<8, 80, ::BinaryStream> mOutgoingData;
43 ::ll::TypedStorage<8, 8, uint64> mCompressibleBytes;
44 ::ll::TypedStorage<8, 32, ::std::string> mIncomingDataBuffer;
45 ::ll::TypedStorage<8, 80, ::std::optional<::ReadOnlyBinaryStream>> mIncomingData;
46 ::ll::TypedStorage<8, 8, ::std::unique_ptr<::TaskGroup>> mTaskGroup;
47 ::ll::TypedStorage<8, 80, ::SPSCQueue<::BatchedNetworkPeer::DataCallback, 512>> mSendQueue;
48 ::ll::TypedStorage<1, 1, ::std::atomic<bool>> mTaskRunning;
49 ::ll::TypedStorage<8, 8, ::std::atomic<uint64>> mQueuedPackets;
50 ::ll::TypedStorage<8, 8, uint64> mSentPackets;
51 ::ll::TypedStorage<1, 1, bool> mAsyncEnabled;
52 // NOLINTEND
53
54public:
55 // prevent constructor by default
56 BatchedNetworkPeer();
57
58public:
59 // virtual functions
60 // NOLINTBEGIN
61 virtual ~BatchedNetworkPeer() /*override*/ = default;
62
63 virtual void flush(::std::function<void()>&& callback) /*override*/;
64
65 virtual void sendPacket(
66 ::std::string const& data,
67 ::NetworkPeer::Reliability reliability,
68 ::Compressibility compressible
69 ) /*override*/;
70
71 virtual ::NetworkPeer::NetworkStatus getNetworkStatus() const /*override*/;
72
73 virtual void update() /*override*/;
74
75 virtual ::NetworkPeer::DataStatus _receivePacket(
76 ::std::string& outData,
77 ::std::shared_ptr<::std::chrono::steady_clock::time_point> const& timepointPtr
78 ) /*override*/;
79 // NOLINTEND
80
81public:
82 // member functions
83 // NOLINTBEGIN
84 MCAPI BatchedNetworkPeer(::std::shared_ptr<::NetworkPeer> peer, ::Scheduler& scheduler);
85 // NOLINTEND
86
87public:
88 // constructor thunks
89 // NOLINTBEGIN
90 MCAPI void* $ctor(::std::shared_ptr<::NetworkPeer> peer, ::Scheduler& scheduler);
91 // NOLINTEND
92
93public:
94 // virtual function thunks
95 // NOLINTBEGIN
96 MCAPI void $flush(::std::function<void()>&& callback);
97
98 MCAPI void
99 $sendPacket(::std::string const& data, ::NetworkPeer::Reliability reliability, ::Compressibility compressible);
100
101 MCFOLD ::NetworkPeer::NetworkStatus $getNetworkStatus() const;
102
103 MCAPI void $update();
104
105 MCAPI ::NetworkPeer::DataStatus $_receivePacket(
106 ::std::string& outData,
107 ::std::shared_ptr<::std::chrono::steady_clock::time_point> const& timepointPtr
108 );
109
110
111 // NOLINTEND
112};
Definition NetworkPeer.h:8
Definition Scheduler.h:14
Definition TaskGroup.h:61
STL namespace.
Definition BatchedNetworkPeer.h:29
Definition NetworkPeer.h:36