safesight/plugins/alarm/actions/http_action.h
2025-12-29 16:07:13 +08:00

40 lines
902 B
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);
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;
};
} // namespace rk3588