safesight-edge/plugins/alarm/actions/http_action.h
sladro 644fb590fa
Some checks are pending
CI / host-build (push) Waiting to run
CI / rk3588-cross-build (push) Waiting to run
修改bug
2026-01-05 16:02:45 +08:00

49 lines
1.1 KiB
C++

#pragma once
#include "action_base.h"
#include <atomic>
#include <condition_variable>
#include <mutex>
#include <queue>
#include <thread>
namespace rk3588 {
class HttpAction : public IAlarmAction {
public:
~HttpAction();
bool Init(const SimpleJson& config) override;
void Execute(AlarmEvent& event, std::shared_ptr<Frame> frame) override;
void Drain() override;
void Stop() override;
std::string Name() const override { return "http"; }
private:
void WorkerLoop();
bool SendRequest(const std::string& json_body);
enum class QueuePolicy {
DropOldest,
DropNewest,
};
std::string url_;
int timeout_ms_ = 3000;
bool include_media_url_ = true;
std::string method_ = "POST";
std::atomic<bool> running_{false};
std::thread worker_;
std::mutex queue_mutex_;
std::condition_variable queue_cv_;
std::queue<std::string> request_queue_;
size_t in_flight_ = 0;
size_t max_queue_size_ = 0; // 0 = unlimited
QueuePolicy queue_policy_ = QueuePolicy::DropOldest;
uint64_t dropped_total_ = 0;
};
} // namespace rk3588