Documentation
¶
Index ¶
- type ConnectionInfo
- type ConnectionState
- type StateManager
- func (sm *StateManager) GetConnectionInfo() ConnectionInfo
- func (sm *StateManager) GetState() ConnectionState
- func (sm *StateManager) GetStateChangeCallback() func(oldState, newState ConnectionState, info *ConnectionInfo)
- func (sm *StateManager) IsConnecting() bool
- func (sm *StateManager) IsOAuthError() bool
- func (sm *StateManager) IsReady() bool
- func (sm *StateManager) IsState(state ConnectionState) bool
- func (sm *StateManager) IsUserLoggedOut() bool
- func (sm *StateManager) Reset()
- func (sm *StateManager) SetError(err error)
- func (sm *StateManager) SetOAuthError(err error)
- func (sm *StateManager) SetServerInfo(name, version string)
- func (sm *StateManager) SetStateChangeCallback(callback func(oldState, newState ConnectionState, info *ConnectionInfo))
- func (sm *StateManager) SetUserLoggedOut(loggedOut bool)
- func (sm *StateManager) ShouldRetry() bool
- func (sm *StateManager) ShouldRetryOAuth() bool
- func (sm *StateManager) TransitionTo(newState ConnectionState)
- func (sm *StateManager) ValidateTransition(from, to ConnectionState) error
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ConnectionInfo ¶
type ConnectionInfo struct {
State ConnectionState `json:"state"`
LastError error `json:"last_error,omitempty"`
RetryCount int `json:"retry_count"`
LastRetryTime time.Time `json:"last_retry_time,omitempty"`
ServerName string `json:"server_name,omitempty"`
ServerVersion string `json:"server_version,omitempty"`
LastOAuthAttempt time.Time `json:"last_oauth_attempt,omitempty"`
OAuthRetryCount int `json:"oauth_retry_count"`
IsOAuthError bool `json:"is_oauth_error"`
}
ConnectionInfo holds information about the current connection state
type ConnectionState ¶
type ConnectionState int
ConnectionState represents the state of an upstream connection
const ( // StateDisconnected indicates the upstream is not connected StateDisconnected ConnectionState = iota // StateConnecting indicates the upstream is attempting to connect StateConnecting // StatePendingAuth indicates the upstream requires OAuth authentication but is deferred (e.g., waiting for user action) StatePendingAuth // StateAuthenticating indicates the upstream is performing OAuth authentication StateAuthenticating // StateDiscovering indicates the upstream is discovering available tools StateDiscovering // StateReady indicates the upstream is connected and ready for requests StateReady // StateError indicates the upstream encountered an error StateError )
func (ConnectionState) String ¶
func (s ConnectionState) String() string
String returns the string representation of the connection state
type StateManager ¶
type StateManager struct {
// contains filtered or unexported fields
}
StateManager manages the state transitions for an upstream connection
func NewStateManager ¶
func NewStateManager() *StateManager
NewStateManager creates a new state manager
func (*StateManager) GetConnectionInfo ¶
func (sm *StateManager) GetConnectionInfo() ConnectionInfo
GetConnectionInfo returns detailed connection information
func (*StateManager) GetState ¶
func (sm *StateManager) GetState() ConnectionState
GetState returns the current connection state
func (*StateManager) GetStateChangeCallback ¶
func (sm *StateManager) GetStateChangeCallback() func(oldState, newState ConnectionState, info *ConnectionInfo)
GetStateChangeCallback returns the current state change callback
func (*StateManager) IsConnecting ¶
func (sm *StateManager) IsConnecting() bool
IsConnecting returns true if the connection is in progress
func (*StateManager) IsOAuthError ¶
func (sm *StateManager) IsOAuthError() bool
IsOAuthError returns true if the last error was OAuth-related
func (*StateManager) IsReady ¶
func (sm *StateManager) IsReady() bool
IsReady returns true if the connection is ready for requests
func (*StateManager) IsState ¶
func (sm *StateManager) IsState(state ConnectionState) bool
IsState checks if the current state matches the given state
func (*StateManager) IsUserLoggedOut ¶
func (sm *StateManager) IsUserLoggedOut() bool
IsUserLoggedOut returns true if the user has explicitly logged out
func (*StateManager) Reset ¶
func (sm *StateManager) Reset()
Reset resets the state manager to disconnected state
func (*StateManager) SetError ¶
func (sm *StateManager) SetError(err error)
SetError sets an error and transitions to error state
func (*StateManager) SetOAuthError ¶
func (sm *StateManager) SetOAuthError(err error)
SetOAuthError sets an OAuth-specific error with longer backoff periods
func (*StateManager) SetServerInfo ¶
func (sm *StateManager) SetServerInfo(name, version string)
SetServerInfo sets the server information
func (*StateManager) SetStateChangeCallback ¶
func (sm *StateManager) SetStateChangeCallback(callback func(oldState, newState ConnectionState, info *ConnectionInfo))
SetStateChangeCallback sets a callback function that will be called on state changes
func (*StateManager) SetUserLoggedOut ¶
func (sm *StateManager) SetUserLoggedOut(loggedOut bool)
SetUserLoggedOut marks that the user has explicitly logged out This prevents automatic reconnection until cleared (e.g., by explicit login)
func (*StateManager) ShouldRetry ¶
func (sm *StateManager) ShouldRetry() bool
ShouldRetry returns true if the connection should be retried based on exponential backoff
func (*StateManager) ShouldRetryOAuth ¶
func (sm *StateManager) ShouldRetryOAuth() bool
ShouldRetryOAuth returns true if OAuth should be retried with much longer backoff intervals
func (*StateManager) TransitionTo ¶
func (sm *StateManager) TransitionTo(newState ConnectionState)
TransitionTo transitions to a new state
func (*StateManager) ValidateTransition ¶
func (sm *StateManager) ValidateTransition(from, to ConnectionState) error
ValidateTransition validates if a state transition is allowed