10#include <condition_variable>
54 bool owns_controller_lease)
const;
58 std::vector<InspectorCapability> available_;
59 std::vector<InspectorCapability> effective_;
80 using Clock = std::function<std::chrono::steady_clock::time_point()>;
83 std::chrono::milliseconds ttl = std::chrono::seconds(15),
84 Clock clock = [] {
return std::chrono::steady_clock::now(); });
92 std::optional<std::string>
owner();
106 void expire_if_needed();
107 bool begin_operation(std::string_view
owner);
108 void end_operation(std::string_view
owner);
109 bool release_with_reason(std::string_view
owner,
112 std::vector<EndedScope> take_ended_scopes();
115 std::chrono::milliseconds ttl_;
118 std::chrono::steady_clock::time_point expires_at_{};
119 std::size_t active_operations_ = 0;
120 bool release_pending_ =
false;
123 std::vector<EndedScope> ended_scopes_;
147 std::function<void(std::string_view client_id)>;
152 std::chrono::milliseconds lease_ttl =
153 std::chrono::seconds(15),
155 [] {
return std::chrono::steady_clock::now(); });
159 std::chrono::milliseconds lease_ttl =
160 std::chrono::seconds(15),
162 [] {
return std::chrono::steady_clock::now(); });
210 std::shared_ptr<State> state_;
Resolves named profiles and exact custom grants against capabilities that the host actually attached.
Definition session.hpp:36
std::span< const InspectorCapability > available_capabilities() const
Definition session.hpp:41
bool is_granted(InspectorCapability capability) const
InspectorProfile profile() const
Definition session.hpp:40
std::span< const InspectorCapability > effective_capabilities() const
Definition session.hpp:44
std::optional< InspectorMessage > authorize(const InspectorMessage &request, bool owns_controller_lease) const
Returns an error response when the request is unknown, unavailable, not granted, or requires a contro...
bool is_available(InspectorCapability capability) const
InspectorAccessPolicy(InspectorPolicyConfig config={})
bool release(std::string_view owner)
void disconnect(std::string_view owner)
std::optional< std::string > owner()
InspectorControllerLease(std::chrono::milliseconds ttl=std::chrono::seconds(15), Clock clock=[] { return std::chrono::steady_clock::now();})
bool owns(std::string_view owner)
ControllerLeaseResult acquire(std::string_view owner)
ControllerLeaseResult renew(std::string_view owner)
std::function< std::chrono::steady_clock::time_point()> Clock
Definition session.hpp:80
std::chrono::milliseconds remaining()
friend class InspectorSession
Definition session.hpp:96
Bounded response-after-apply handoff from an inspector transport thread to the registered host main t...
Definition main_thread_rpc.hpp:23
void set_audit_log(std::shared_ptr< InspectorAuditLog > audit_log)
void disconnect(std::string_view client_id)
void set_main_thread_rpc(std::shared_ptr< InspectorMainThreadRpc > rpc)
Install the generation-scoped main-thread handoff used for domain requests.
bool dispatches_accepting() const
Snapshot whether new domain dispatches are currently admitted.
void set_controller_scope_end_handler(ControllerScopeEndHandler handler)
Install the host cleanup hook for controller-scoped test input.
InspectorMessage handle(std::string_view client_id, const InspectorMessage &request)
std::function< InspectorMessage(const InspectorMessage &request)> RequestHandler
Definition session.hpp:139
void set_client_disconnect_handler(ClientDisconnectHandler handler)
Install generation-scoped cleanup for per-client domain state.
const InspectorAccessPolicy & policy() const
Definition session.hpp:201
InspectorSession(InspectorSessionInfo info, InspectorPolicyConfig policy, ContextRequestHandler handler, std::chrono::milliseconds lease_ttl=std::chrono::seconds(15), InspectorControllerLease::Clock clock=[] { return std::chrono::steady_clock::now();})
std::function< void(std::string_view client_id)> ClientDisconnectHandler
Definition session.hpp:146
const InspectorSessionInfo & info() const
Definition session.hpp:200
void resume_dispatches()
Reopen domain-handler admission for a new authenticated server generation.
InspectorSession(InspectorSessionInfo info, InspectorPolicyConfig policy, RequestHandler handler, std::chrono::milliseconds lease_ttl=std::chrono::seconds(15), InspectorControllerLease::Clock clock=[] { return std::chrono::steady_clock::now();})
void close_dispatch_admission()
Refuse new work without waiting for already-admitted concurrent work.
void set_concurrent_request_handler(std::string method, ContextRequestHandler handler)
Route one exact authorized method through a handler that is safe to run concurrently on its transport...
std::function< InspectorMessage( const InspectorRequestContext &context, const InspectorMessage &request)> ContextRequestHandler
Definition session.hpp:141
void after_concurrent_dispatches(std::function< void()> completion)
Run completion after every already-admitted concurrent dispatch has returned.
void suspend_dispatches()
Cancel queued domain handlers and reject new ones during server teardown.
std::function< void(const InspectorControllerScopeEnd &event)> ControllerScopeEndHandler
Definition session.hpp:144
Definition agent_context.hpp:7
InspectorProfile
Definition capabilities.hpp:34
@ Off
Definition capabilities.hpp:35
InspectorCapability
Definition capabilities.hpp:10
ControllerLeaseResult
Definition session.hpp:62
@ Acquired
Definition session.hpp:63
@ HeldByOther
Definition session.hpp:65
@ InvalidOwner
Definition session.hpp:66
@ Renewed
Definition session.hpp:64
TestInputReleaseReason
Definition test_input.hpp:43
@ ControllerReleased
Definition test_input.hpp:44
@ State
Definition capabilities.hpp:44
Definition session.hpp:99
std::string owner
Definition session.hpp:100
TestInputReleaseReason reason
Definition session.hpp:101
Definition session.hpp:69
std::string client_id
Definition session.hpp:72
TestInputReleaseReason reason
Definition session.hpp:73
std::string instance_id
Definition session.hpp:71
std::string session_id
Definition session.hpp:70
A single inspector protocol message (request, response, or event).
Definition protocol.hpp:18
Definition session.hpp:25
InspectorProfile profile
Definition session.hpp:26
bool runtime_eval_enabled
Definition session.hpp:29
std::vector< InspectorCapability > available_capabilities
Definition session.hpp:28
std::vector< InspectorCapability > custom_capabilities
Definition session.hpp:27
Authenticated transport identity attached to a domain request.
Definition inspector_delivery.hpp:11
Definition session.hpp:126
std::string plugin_id
Definition session.hpp:129
std::string instance_id
Definition session.hpp:128
std::string protocol_version
Definition session.hpp:130
std::string session_id
Definition session.hpp:127