#include
namespace obb::geomail {
namespace {
std::deque s_pending;
constexpr std::size_t kMaxBuffer = 32;
}
void queue_init() {
s_pending.clear();
}
void enqueue_message(const GeoMailMessage &msg) {
if (s_pending.size() >= kMaxBuffer) {
s_pending.pop_front();
}
s_pending.push_back(msg);
}
std::vector snapshot_queue(std::size_t limit) {
std::vector out;
out.reserve(std::min(limit, s_pending.size()));
for (const auto &msg : s_pending) {
out.push_back(msg);
if (out.size() >= limit) break;
}
return out;
}
void mark_acknowledged(uint32_t timestamp) {
s_pending.erase(std::remove_if(s_pending.begin(), s_pending.end(),
[&](const GeoMailMessage &msg) {
return msg.timestamp == timestamp;
}),
s_pending.end());
}
}">
#include
namespace obb::geomail {
namespace {
std::deque s_pending;
constexpr std::size_t kMaxBuffer = 32;
}
void queue_init() {
s_pending.clear();
}
void enqueue_message(const GeoMailMessage &msg) {
if (s_pending.size() >= kMaxBuffer) {
s_pending.pop_front();
}
s_pending.push_back(msg);
}
std::vector snapshot_queue(std::size_t limit) {
std::vector out;
out.reserve(std::min(limit, s_pending.size()));
for (const auto &msg : s_pending) {
out.push_back(msg);
if (out.size() >= limit) break;
}
return out;
}
void mark_acknowledged(uint32_t timestamp) {
s_pending.erase(std::remove_if(s_pending.begin(), s_pending.end(),
[&](const GeoMailMessage &msg) {
return msg.timestamp == timestamp;
}),
s_pending.end());
}
}">
#include
namespace obb::geomail {
namespace {
std::deque s_pending;
constexpr std::size_t kMaxBuffer = 32;
}
void queue_init() {
s_pending.clear();
}
void enqueue_message(const GeoMailMessage &msg) {
if (s_pending.size() >= kMaxBuffer) {
s_pending.pop_front();
}
s_pending.push_back(msg);
}
std::vector snapshot_queue(std::size_t limit) {
std::vector out;
out.reserve(std::min(limit, s_pending.size()));
for (const auto &msg : s_pending) {
out.push_back(msg);
if (out.size() >= limit) break;
}
return out;
}
void mark_acknowledged(uint32_t timestamp) {
s_pending.erase(std::remove_if(s_pending.begin(), s_pending.end(),
[&](const GeoMailMessage &msg) {
return msg.timestamp == timestamp;
}),
s_pending.end());
}
}">
#include "app/ui/geomail/obb_geomail_threads.h"
#include <algorithm>
#include <deque>
namespace obb::geomail {
namespace {
std::deque<GeoMailMessage> s_pending;
constexpr std::size_t kMaxBuffer = 32;
}
void queue_init() {
s_pending.clear();
}
void enqueue_message(const GeoMailMessage &msg) {
if (s_pending.size() >= kMaxBuffer) {
s_pending.pop_front();
}
s_pending.push_back(msg);
}
std::vector<GeoMailMessage> snapshot_queue(std::size_t limit) {
std::vector<GeoMailMessage> out;
out.reserve(std::min(limit, s_pending.size()));
for (const auto &msg : s_pending) {
out.push_back(msg);
if (out.size() >= limit) break;
}
return out;
}
void mark_acknowledged(uint32_t timestamp) {
s_pending.erase(std::remove_if(s_pending.begin(), s_pending.end(),
[&](const GeoMailMessage &msg) {
return msg.timestamp == timestamp;
}),
s_pending.end());
}
} // namespace obb::geomail