Class: Parse::Agent::MCPDispatcher::LogLevelRegistry
- Inherits:
-
Object
- Object
- Parse::Agent::MCPDispatcher::LogLevelRegistry
- Defined in:
- lib/parse/agent/mcp_dispatcher.rb
Overview
Per-session minimum log level, keyed by the MCP session id (the agent's correlation id). LRU-bounded so a stream of sessions that never terminate cannot grow it without limit.
Constant Summary collapse
- DEFAULT_MAX_ENTRIES =
10_000
Instance Method Summary collapse
- #forget(session_id) ⇒ Object
-
#get(session_id) ⇒ String?
The level the session asked for, or nil when it never sent
logging/setLevel. -
#initialize(max_entries: DEFAULT_MAX_ENTRIES) ⇒ LogLevelRegistry
constructor
A new instance of LogLevelRegistry.
- #set(session_id, level) ⇒ Object
Constructor Details
#initialize(max_entries: DEFAULT_MAX_ENTRIES) ⇒ LogLevelRegistry
Returns a new instance of LogLevelRegistry.
115 116 117 118 119 |
# File 'lib/parse/agent/mcp_dispatcher.rb', line 115 def initialize(max_entries: DEFAULT_MAX_ENTRIES) @levels = {} @max = max_entries @mutex = Mutex.new end |
Instance Method Details
#forget(session_id) ⇒ Object
139 140 141 142 |
# File 'lib/parse/agent/mcp_dispatcher.rb', line 139 def forget(session_id) return if session_id.nil? @mutex.synchronize { @levels.delete(session_id.to_s) } end |
#get(session_id) ⇒ String?
Returns the level the session asked for, or nil
when it never sent logging/setLevel.
134 135 136 137 |
# File 'lib/parse/agent/mcp_dispatcher.rb', line 134 def get(session_id) return nil if session_id.nil? @mutex.synchronize { @levels[session_id.to_s] } end |
#set(session_id, level) ⇒ Object
123 124 125 126 127 128 129 130 |
# File 'lib/parse/agent/mcp_dispatcher.rb', line 123 def set(session_id, level) return if session_id.nil? || session_id.to_s.empty? @mutex.synchronize do @levels.delete(session_id.to_s) @levels[session_id.to_s] = level @levels.shift while @levels.size > @max end end |