TARAXA
Loading...
Searching...
No Matches
packets_queue.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <list>
4#include <optional>
5
8#include "packet_data.hpp"
9
11
13 public:
14 PacketsQueue() = default;
15
21 void pushBack(std::pair<tarcap::TarcapVersion, PacketData>&& packet);
22
32 std::optional<std::pair<tarcap::TarcapVersion, PacketData>> pop(const PacketsBlockingMask& packets_blocking_mask);
33
38 bool maxWorkersCountReached() const;
39
45 void setMaxWorkersCount(size_t max_workers_count);
46
51
56
61 bool empty() const;
62
67 size_t size() const;
68
73 size_t getActiveWorkersNum() const;
74
75 private:
76 std::list<std::pair<tarcap::TarcapVersion, PacketData>> packets_;
77
78 // How many workers can process packets from this queue at the same time
80
81 // How many workers are currently processing packets from this queue at the same time
82 std::atomic<size_t> act_workers_count_{0};
83
84 // How many packets are currently inside the queue
85 std::atomic<size_t> act_packets_count_{0};
86};
87
88} // namespace taraxa::network::threadpool
Definition packets_blocking_mask.hpp:16
Definition packets_queue.hpp:12
void pushBack(std::pair< tarcap::TarcapVersion, PacketData > &&packet)
Push new task to the queue.
Definition packets_queue.cpp:13
size_t kMaxWorkersCount_
Definition packets_queue.hpp:79
std::optional< std::pair< tarcap::TarcapVersion, PacketData > > pop(const PacketsBlockingMask &packets_blocking_mask)
Return Task from queue. In some rare situations when all packets are blocked for processing due to bl...
Definition packets_queue.cpp:18
void setMaxWorkersCount(size_t max_workers_count)
Set new max workers count.
Definition packets_queue.cpp:38
std::atomic< size_t > act_workers_count_
Definition packets_queue.hpp:82
void decrementActWorkersCount()
Decrement act_workers_count_ by 1.
Definition packets_queue.cpp:42
bool empty() const
Definition packets_queue.cpp:48
bool maxWorkersCountReached() const
Definition packets_queue.cpp:5
size_t getActiveWorkersNum() const
Definition packets_queue.cpp:52
size_t size() const
Definition packets_queue.cpp:50
std::atomic< size_t > act_packets_count_
Definition packets_queue.hpp:85
std::list< std::pair< tarcap::TarcapVersion, PacketData > > packets_
Definition packets_queue.hpp:76
void incrementActWorkersCount()
Increment act_workers_count_ by 1.
Definition packets_queue.cpp:40
Definition node_stats.hpp:18