Class: VectorMCP::Transport::StdioSessionManager
- Inherits:
-
BaseSessionManager
- Object
- BaseSessionManager
- VectorMCP::Transport::StdioSessionManager
- Defined in:
- lib/vector_mcp/transport/stdio_session_manager.rb
Overview
Session manager for Stdio transport with single global session. Extends BaseSessionManager with stdio-specific functionality.
The Stdio transport uses a single global session for the entire transport lifetime.
Constant Summary collapse
- GLOBAL_SESSION_ID =
"stdio_global_session"
Instance Attribute Summary
Attributes inherited from BaseSessionManager
#logger, #session_timeout, #transport
Instance Method Summary collapse
-
#active_session_ids ⇒ Array<String>
Override: Always returns the global session ID.
-
#all_sessions ⇒ Array<Session>
Gets all sessions for stdio transport (just the one global session).
-
#create_session(_session_id = nil) ⇒ Session
Override: Cannot create additional sessions in stdio transport.
-
#current_all_sessions ⇒ Array<Session>
Alias for all_sessions for compatibility with tests.
-
#current_global_session ⇒ Session
Alias for global_session for compatibility with tests.
-
#global_session ⇒ Session
Gets the global session for stdio transport.
-
#global_session_or_create ⇒ Session
Gets or creates the global session for stdio transport.
-
#global_session_or_create_current ⇒ Session
Alias for global_session_or_create for compatibility with tests.
-
#initialize(transport, session_timeout = 300) ⇒ StdioSessionManager
constructor
Initializes a new Stdio session manager.
-
#session(_session_id = nil) ⇒ Session
Override: Gets session by ID, but always returns the global session for stdio.
-
#session_count ⇒ Integer
Override: Always returns 1 for the single global session.
-
#session_or_create(_session_id = nil) ⇒ Session
Override: Always returns the global session for stdio.
-
#session_terminated?(_session_id) ⇒ Boolean
Override: Cannot terminate the global session while transport is running.
-
#sessions? ⇒ Boolean
Override: Always returns true for the single session.
Methods inherited from BaseSessionManager
#cleanup_all_sessions, #find_sessions, #get_or_create_session, #get_session, #get_session_metadata, #session_metadata_updated?
Constructor Details
#initialize(transport, session_timeout = 300) ⇒ StdioSessionManager
Initializes a new Stdio session manager.
18 19 20 21 22 23 |
# File 'lib/vector_mcp/transport/stdio_session_manager.rb', line 18 def initialize(transport, session_timeout = 300) super # Create the single global session for stdio transport @global_session = create_global_session end |
Instance Method Details
#active_session_ids ⇒ Array<String>
Override: Always returns the global session ID.
86 87 88 |
# File 'lib/vector_mcp/transport/stdio_session_manager.rb', line 86 def active_session_ids [GLOBAL_SESSION_ID] end |
#all_sessions ⇒ Array<Session>
Gets all sessions for stdio transport (just the one global session).
100 101 102 |
# File 'lib/vector_mcp/transport/stdio_session_manager.rb', line 100 def all_sessions [@global_session].compact end |
#create_session(_session_id = nil) ⇒ Session
Override: Cannot create additional sessions in stdio transport.
62 63 64 65 |
# File 'lib/vector_mcp/transport/stdio_session_manager.rb', line 62 def create_session(_session_id = nil) # For stdio, always return the existing global session global_session end |
#current_all_sessions ⇒ Array<Session>
Alias for all_sessions for compatibility with tests.
121 122 123 |
# File 'lib/vector_mcp/transport/stdio_session_manager.rb', line 121 def current_all_sessions all_sessions end |
#current_global_session ⇒ Session
Alias for global_session for compatibility with tests.
107 108 109 |
# File 'lib/vector_mcp/transport/stdio_session_manager.rb', line 107 def current_global_session global_session end |
#global_session ⇒ Session
Gets the global session for stdio transport. Stdio uses a single global session for the entire transport lifetime.
29 30 31 32 |
# File 'lib/vector_mcp/transport/stdio_session_manager.rb', line 29 def global_session @global_session&.touch! @global_session end |
#global_session_or_create ⇒ Session
Gets or creates the global session for stdio transport. This is an alias for global_session for stdio transport.
38 39 40 |
# File 'lib/vector_mcp/transport/stdio_session_manager.rb', line 38 def global_session_or_create global_session end |
#global_session_or_create_current ⇒ Session
Alias for global_session_or_create for compatibility with tests.
114 115 116 |
# File 'lib/vector_mcp/transport/stdio_session_manager.rb', line 114 def global_session_or_create_current global_session_or_create end |
#session(_session_id = nil) ⇒ Session
Override: Gets session by ID, but always returns the global session for stdio.
46 47 48 |
# File 'lib/vector_mcp/transport/stdio_session_manager.rb', line 46 def session(_session_id = nil) global_session end |
#session_count ⇒ Integer
Override: Always returns 1 for the single global session.
79 80 81 |
# File 'lib/vector_mcp/transport/stdio_session_manager.rb', line 79 def session_count 1 end |
#session_or_create(_session_id = nil) ⇒ Session
Override: Always returns the global session for stdio.
54 55 56 |
# File 'lib/vector_mcp/transport/stdio_session_manager.rb', line 54 def session_or_create(_session_id = nil) global_session end |
#session_terminated?(_session_id) ⇒ Boolean
Override: Cannot terminate the global session while transport is running.
71 72 73 74 |
# File 'lib/vector_mcp/transport/stdio_session_manager.rb', line 71 def session_terminated?(_session_id) # For stdio, the session is only terminated when the transport shuts down false end |
#sessions? ⇒ Boolean
Override: Always returns true for the single session.
93 94 95 |
# File 'lib/vector_mcp/transport/stdio_session_manager.rb', line 93 def sessions? true end |