Class: VectorMCP::Transport::StdioSessionManager

Inherits:
BaseSessionManager show all
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

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.

Parameters:

  • transport (Stdio)

    The parent transport instance

  • session_timeout (Integer) (defaults to: 300)

    Session timeout in seconds (ignored for stdio)



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_idsArray<String>

Override: Always returns the global session ID.

Returns:

  • (Array<String>)

    Array containing 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_sessionsArray<Session>

Gets all sessions for stdio transport (just the one global session).

Returns:

  • (Array<Session>)

    Array containing the 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.

Parameters:

  • session_id (String, nil)

    The session ID (ignored)

Returns:



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_sessionsArray<Session>

Alias for all_sessions for compatibility with tests.

Returns:

  • (Array<Session>)

    Array containing the global session



121
122
123
# File 'lib/vector_mcp/transport/stdio_session_manager.rb', line 121

def current_all_sessions
  all_sessions
end

#current_global_sessionSession

Alias for global_session for compatibility with tests.

Returns:



107
108
109
# File 'lib/vector_mcp/transport/stdio_session_manager.rb', line 107

def current_global_session
  global_session
end

#global_sessionSession

Gets the global session for stdio transport. Stdio uses a single global session for the entire transport lifetime.

Returns:



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_createSession

Gets or creates the global session for stdio transport. This is an alias for global_session for stdio transport.

Returns:



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_currentSession

Alias for global_session_or_create for compatibility with tests.

Returns:



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.

Parameters:

  • session_id (String)

    The session ID (ignored for stdio)

Returns:



46
47
48
# File 'lib/vector_mcp/transport/stdio_session_manager.rb', line 46

def session(_session_id = nil)
  global_session
end

#session_countInteger

Override: Always returns 1 for the single global session.

Returns:

  • (Integer)

    Always 1



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.

Parameters:

  • session_id (String, nil)

    The session ID (ignored)

Returns:



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.

Parameters:

  • session_id (String)

    The session ID (ignored)

Returns:

  • (Boolean)

    Always false (session cannot be terminated individually)



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.

Returns:

  • (Boolean)

    Always true



93
94
95
# File 'lib/vector_mcp/transport/stdio_session_manager.rb', line 93

def sessions?
  true
end