Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
audit.hpp
Go to the documentation of this file.
1#pragma once
2
4
5#include <algorithm>
6#include <cstddef>
7#include <cstdint>
8#include <deque>
9#include <mutex>
10#include <string>
11#include <utility>
12#include <vector>
13
14namespace pulp::inspect {
15
16enum class InspectorAuditOutcome : std::uint8_t {
20};
21
36
38 public:
39 explicit InspectorAuditLog(std::size_t capacity = 256)
40 : capacity_(std::max<std::size_t>(capacity, 1)) {}
41
43 std::lock_guard lock(mutex_);
44 entry.sequence = next_sequence_++;
45 if (entries_.size() == capacity_)
46 entries_.pop_front();
47 entries_.push_back(std::move(entry));
48 }
49 std::vector<InspectorAuditEntry> snapshot() const {
50 std::lock_guard lock(mutex_);
51 return {entries_.begin(), entries_.end()};
52 }
53 std::size_t capacity() const {
54 return capacity_;
55 }
56
57 private:
58 const std::size_t capacity_;
59 mutable std::mutex mutex_;
60 std::deque<InspectorAuditEntry> entries_;
61 std::uint64_t next_sequence_ = 1;
62};
63
70
74 std::uint64_t sequence = 0;
75 std::string action;
76 std::string broker_id;
77 std::string peer_fingerprint;
78 std::string client_id;
79 std::string registration_id;
80 std::string grant_id;
81 std::string session_id;
82 std::string instance_id;
83 std::string publication_id;
84 std::string capability_id;
86 std::string reason;
87};
88
90public:
91 explicit ControlSecurityAuditLog(std::size_t capacity = 512)
92 : capacity_(std::max<std::size_t>(capacity, 1)) {}
93
95 std::lock_guard lock(mutex_);
96 entry.sequence = next_sequence_++;
97 if (entries_.size() == capacity_)
98 entries_.pop_front();
99 entries_.push_back(std::move(entry));
100 }
101
102 std::vector<ControlSecurityAuditEntry> snapshot() const {
103 std::lock_guard lock(mutex_);
104 return {entries_.begin(), entries_.end()};
105 }
106
107private:
108 const std::size_t capacity_;
109 mutable std::mutex mutex_;
110 std::deque<ControlSecurityAuditEntry> entries_;
111 std::uint64_t next_sequence_ = 1;
112};
113
114} // namespace pulp::inspect
void append(ControlSecurityAuditEntry entry)
Definition audit.hpp:94
ControlSecurityAuditLog(std::size_t capacity=512)
Definition audit.hpp:91
std::vector< ControlSecurityAuditEntry > snapshot() const
Definition audit.hpp:102
InspectorAuditLog(std::size_t capacity=256)
Definition audit.hpp:39
void append(InspectorAuditEntry entry)
Definition audit.hpp:42
std::size_t capacity() const
Definition audit.hpp:53
std::vector< InspectorAuditEntry > snapshot() const
Definition audit.hpp:49
Definition agent_context.hpp:7
InspectorAuditOutcome
Definition audit.hpp:16
@ Denied
Definition audit.hpp:17
@ Rejected
Definition audit.hpp:19
InspectorCapability
Definition capabilities.hpp:10
@ Unavailable
Definition capabilities.hpp:47
ControlSecurityOutcome
Definition audit.hpp:64
@ Expired
Definition audit.hpp:68
@ Accepted
Definition audit.hpp:65
@ Denied
Definition audit.hpp:66
@ Revoked
Definition audit.hpp:67
STL namespace.
Metadata-only security event.
Definition audit.hpp:73
ControlSecurityOutcome outcome
Definition audit.hpp:85
std::string instance_id
Definition audit.hpp:82
std::uint64_t sequence
Definition audit.hpp:74
std::string publication_id
Definition audit.hpp:83
std::string grant_id
Definition audit.hpp:80
std::string client_id
Definition audit.hpp:78
std::string peer_fingerprint
Definition audit.hpp:77
std::string action
Definition audit.hpp:75
std::string reason
Definition audit.hpp:86
std::string broker_id
Definition audit.hpp:76
std::string capability_id
Definition audit.hpp:84
std::string session_id
Definition audit.hpp:81
std::string registration_id
Definition audit.hpp:79
Metadata-only record for a mutating inspector request.
Definition audit.hpp:25
std::uint64_t sequence
Definition audit.hpp:26
std::int64_t request_id
Definition audit.hpp:27
std::string session_id
Definition audit.hpp:28
std::string error_code
Definition audit.hpp:34
InspectorAuditOutcome outcome
Definition audit.hpp:33
std::string method
Definition audit.hpp:31
std::string client_id
Definition audit.hpp:30
std::string instance_id
Definition audit.hpp:29
InspectorCapability capability
Definition audit.hpp:32