Documentation
¶
Index ¶
- Constants
- Variables
- func Provision(request ProvisionRequest) (*pb.ProvisionResponse, error)
- type CircuitBreaker
- type CircuitBreakerConfig
- type CircuitBreakerState
- type CircuitBreakerStats
- type ConnectionPoolConfig
- type ErrorRateSample
- type GRPCConnectionMetrics
- type GravityClient
- func (g *GravityClient) Close() error
- func (g *GravityClient) Disconnected(ctx context.Context)
- func (g *GravityClient) GetAPIURL() string
- func (g *GravityClient) GetConnectionPoolStats() map[string]any
- func (g *GravityClient) GetDeploymentMetadata(ctx context.Context, deploymentID, orgID string) (*pb.DeploymentMetadataResponse, error)
- func (g *GravityClient) GetHealthScore() float64
- func (g *GravityClient) GetIPv6Address() string
- func (g *GravityClient) GetInboundPackets() <-chan *PooledBuffer
- func (g *GravityClient) GetSandboxMetadata(ctx context.Context, sandboxID, orgID string, generateCertificate bool) (*pb.SandboxMetadataResponse, error)
- func (g *GravityClient) GetSecret() string
- func (g *GravityClient) GetServerMetrics(reset bool) *pb.ServerMetrics
- func (g *GravityClient) GetTLSConfig() *tls.Config
- func (g *GravityClient) GetTextMessages() <-chan *PooledBuffer
- func (g *GravityClient) IsConnected() bool
- func (g *GravityClient) Pause(reason string) error
- func (g *GravityClient) Resume(reason string) error
- func (g *GravityClient) SendPacket(data []byte) error
- func (g *GravityClient) SendRouteDeploymentRequest(deploymentID, hostname, virtualIP string, timeout time.Duration) (*pb.RouteDeploymentResponse, error)
- func (g *GravityClient) SendRouteSandboxRequest(sandboxID, virtualIP string, timeout time.Duration) (*pb.RouteSandboxResponse, error)
- func (g *GravityClient) Start() error
- func (g *GravityClient) Unprovision(deploymentID string) error
- func (g *GravityClient) WritePacket(payload []byte) error
- type GravityConfig
- type HealthSample
- type HistoricalMetrics
- type LatencySample
- type MessageStatistics
- type PooledBuffer
- type ProvisionRequest
- type RetryConfig
- type RetryStats
- type RetryableFunc
- type ServerMetrics
- func (sm *ServerMetrics) AddHistoricalSample()
- func (sm *ServerMetrics) GetHealthScore() float64
- func (sm *ServerMetrics) GetSnapshot() *pb.ServerMetrics
- func (sm *ServerMetrics) RecordMessage(messageType string, bytes int64, sent bool)
- func (sm *ServerMetrics) Reset()
- func (sm *ServerMetrics) UpdateConnection(connected bool)
- func (sm *ServerMetrics) UpdateGRPCMetrics(grpcMetrics *GRPCConnectionMetrics)
- func (sm *ServerMetrics) UpdatePerformanceMetrics(perfMetrics *pb.PerformanceMetrics)
- func (sm *ServerMetrics) UpdateSystemMetrics()
- type ServerMetricsSnapshot
- type StreamAllocationStrategy
- type StreamInfo
- type StreamManager
- type StreamMetrics
- type SystemResourceMetrics
- type ThroughputSample
Constants ¶
const ( StateClosed = resilience.StateClosed StateHalfOpen = resilience.StateHalfOpen StateOpen = resilience.StateOpen )
Variables ¶
var ( ErrCircuitBreakerOpen = resilience.ErrCircuitBreakerOpen ErrCircuitBreakerTimeout = resilience.ErrCircuitBreakerTimeout ErrTooManyFailures = resilience.ErrTooManyFailures )
var ( DefaultRetryConfig = resilience.DefaultRetryConfig DefaultRetryableErrors = resilience.DefaultRetryableErrors Retry = resilience.Retry RetryWithCircuitBreaker = resilience.RetryWithCircuitBreaker ExponentialBackoff = resilience.ExponentialBackoff LinearBackoff = resilience.LinearBackoff RetryWithStats = resilience.RetryWithStats NewCircuitBreaker = resilience.NewCircuitBreaker DefaultCircuitBreakerConfig = resilience.DefaultCircuitBreakerConfig )
Re-export functions for backward compatibility
var ErrConnectionClosed = errors.New("gravity connection closed")
Error variables for consistency with old implementation
Functions ¶
func Provision ¶ added in v1.0.96
func Provision(request ProvisionRequest) (*pb.ProvisionResponse, error)
Provision calls the Provision gRPC method with TLS verification disabled This is a standalone method that should be used for initial provisioning
Types ¶
type CircuitBreaker ¶
type CircuitBreaker = resilience.CircuitBreaker
Re-export types and functions from resilience package for backward compatibility
type CircuitBreakerConfig ¶
type CircuitBreakerConfig = resilience.CircuitBreakerConfig
Re-export types and functions from resilience package for backward compatibility
type CircuitBreakerState ¶
type CircuitBreakerState = resilience.CircuitBreakerState
Re-export types and functions from resilience package for backward compatibility
type CircuitBreakerStats ¶
type CircuitBreakerStats = resilience.CircuitBreakerStats
Re-export types and functions from resilience package for backward compatibility
type ConnectionPoolConfig ¶
type ConnectionPoolConfig struct {
// Connection pool size (4-8 connections as per PLAN.md)
PoolSize int
// Streams per connection for packet multiplexing
StreamsPerConnection int
// Stream allocation strategy
AllocationStrategy StreamAllocationStrategy
// Health check and failover settings
HealthCheckInterval time.Duration
FailoverTimeout time.Duration
}
ConnectionPoolConfig holds configuration for gRPC connection pool optimization
type ErrorRateSample ¶
type ErrorRateSample = pb.ErrorRateSample
Type aliases for protobuf types to maintain API compatibility
type GRPCConnectionMetrics ¶
type GRPCConnectionMetrics = pb.GRPCConnectionMetrics
Type aliases for protobuf types to maintain API compatibility
type GravityClient ¶
type GravityClient struct {
// contains filtered or unexported fields
}
GravityClient implements the provider.Server interface using gRPC transport
func New ¶
func New(config GravityConfig) (*GravityClient, error)
New creates a new gRPC-based Gravity server client
func (*GravityClient) Disconnected ¶ added in v1.0.102
func (g *GravityClient) Disconnected(ctx context.Context)
Disconnected will wait for the client to be disconnected or the ctx to be cancelled
func (*GravityClient) GetAPIURL ¶
func (g *GravityClient) GetAPIURL() string
GetAPIURL returns the API URL received from gravity server
func (*GravityClient) GetConnectionPoolStats ¶
func (g *GravityClient) GetConnectionPoolStats() map[string]any
GetConnectionPoolStats returns current connection pool statistics for monitoring
func (*GravityClient) GetDeploymentMetadata ¶
func (g *GravityClient) GetDeploymentMetadata(ctx context.Context, deploymentID, orgID string) (*pb.DeploymentMetadataResponse, error)
GetDeploymentMetadata makes a gRPC call to get deployment metadata This is used by HTTP API server for provision requests
func (*GravityClient) GetHealthScore ¶
func (g *GravityClient) GetHealthScore() float64
GetHealthScore returns the overall health score (0-100)
func (*GravityClient) GetIPv6Address ¶
func (g *GravityClient) GetIPv6Address() string
GetIPv6Address returns the IPv6 address for external use
func (*GravityClient) GetInboundPackets ¶
func (g *GravityClient) GetInboundPackets() <-chan *PooledBuffer
func (*GravityClient) GetSandboxMetadata ¶ added in v1.0.138
func (g *GravityClient) GetSandboxMetadata(ctx context.Context, sandboxID, orgID string, generateCertificate bool) (*pb.SandboxMetadataResponse, error)
GetSandboxMetadata makes a gRPC call to get sandbox metadata This is used by HTTP API server for sandbox creation when a port is specified
func (*GravityClient) GetSecret ¶
func (g *GravityClient) GetSecret() string
GetSecret returns the authentication secret for external use
func (*GravityClient) GetServerMetrics ¶
func (g *GravityClient) GetServerMetrics(reset bool) *pb.ServerMetrics
GetServerMetrics returns current server metrics with performance data
func (*GravityClient) GetTLSConfig ¶
func (g *GravityClient) GetTLSConfig() *tls.Config
GetTLSConfig returns the TLS configuration for external use (like HTTP server)
func (*GravityClient) GetTextMessages ¶
func (g *GravityClient) GetTextMessages() <-chan *PooledBuffer
func (*GravityClient) IsConnected ¶
func (g *GravityClient) IsConnected() bool
func (*GravityClient) Pause ¶
func (g *GravityClient) Pause(reason string) error
Pause sends a pause event to the gravity server
func (*GravityClient) Resume ¶
func (g *GravityClient) Resume(reason string) error
Resume sends a resume event to the gravity server
func (*GravityClient) SendPacket ¶
func (g *GravityClient) SendPacket(data []byte) error
func (*GravityClient) SendRouteDeploymentRequest ¶
func (g *GravityClient) SendRouteDeploymentRequest(deploymentID, hostname, virtualIP string, timeout time.Duration) (*pb.RouteDeploymentResponse, error)
SendRouteDeploymentRequest sends a route deployment request and waits for response (sync)
func (*GravityClient) SendRouteSandboxRequest ¶ added in v1.0.136
func (g *GravityClient) SendRouteSandboxRequest(sandboxID, virtualIP string, timeout time.Duration) (*pb.RouteSandboxResponse, error)
SendRouteSandboxRequest sends a route sandbox request and waits for response (sync)
func (*GravityClient) Start ¶
func (g *GravityClient) Start() error
Start establishes gRPC connections and starts the client
func (*GravityClient) Unprovision ¶
func (g *GravityClient) Unprovision(deploymentID string) error
Unprovision sends an unprovision request to the gravity server
func (*GravityClient) WritePacket ¶
func (g *GravityClient) WritePacket(payload []byte) error
WritePacket sends a tunnel packet via gRPC tunnel stream using load balancing
type GravityConfig ¶
type GravityConfig struct {
Context context.Context
Logger logger.Logger
Provider provider.Provider
URL string
Cert string
Key string
CACert string
IP4Address string
IP6Address string
InstanceID string
AuthToken string
ClientVersion string
ClientName string
Capabilities *pb.ClientCapabilities
PingInterval time.Duration
ReportInterval time.Duration
WorkingDir string
TraceLogPackets bool
NetworkInterface network.NetworkInterface
ConnectionPoolConfig *ConnectionPoolConfig
ReportStats bool
SkipAutoReconnect bool
}
GravityConfig contains configuration for the Gravity client
type HealthSample ¶
type HealthSample = pb.HealthSample
Type aliases for protobuf types to maintain API compatibility
type HistoricalMetrics ¶
type HistoricalMetrics = pb.HistoricalMetrics
Type aliases for protobuf types to maintain API compatibility
type LatencySample ¶
type LatencySample = pb.LatencySample
Type aliases for protobuf types to maintain API compatibility
type MessageStatistics ¶
type MessageStatistics = pb.MessageStatistics
Type aliases for protobuf types to maintain API compatibility
type PooledBuffer ¶
PooledBuffer represents a buffer from the pool
type ProvisionRequest ¶ added in v1.0.96
type RetryConfig ¶
type RetryConfig = resilience.RetryConfig
Re-export types and functions from resilience package for backward compatibility
type RetryStats ¶
type RetryStats = resilience.RetryStats
Re-export types and functions from resilience package for backward compatibility
type RetryableFunc ¶
type RetryableFunc = resilience.RetryableFunc
Re-export types and functions from resilience package for backward compatibility
type ServerMetrics ¶
type ServerMetrics struct {
// contains filtered or unexported fields
}
ServerMetrics represents enhanced server performance metrics with gRPC-specific data This wraps the protobuf ServerMetrics with a mutex for thread safety
func NewServerMetrics ¶
func NewServerMetrics() *ServerMetrics
NewServerMetrics creates a new ServerMetrics instance
func (*ServerMetrics) AddHistoricalSample ¶
func (sm *ServerMetrics) AddHistoricalSample()
AddHistoricalSample adds a sample to historical data
func (*ServerMetrics) GetHealthScore ¶
func (sm *ServerMetrics) GetHealthScore() float64
GetHealthScore calculates an overall health score (0-100)
func (*ServerMetrics) GetSnapshot ¶
func (sm *ServerMetrics) GetSnapshot() *pb.ServerMetrics
GetSnapshot returns a read-only snapshot of current metrics
func (*ServerMetrics) RecordMessage ¶
func (sm *ServerMetrics) RecordMessage(messageType string, bytes int64, sent bool)
RecordMessage records a message transmission
func (*ServerMetrics) Reset ¶
func (sm *ServerMetrics) Reset()
Reset resets all metrics to initial state
func (*ServerMetrics) UpdateConnection ¶
func (sm *ServerMetrics) UpdateConnection(connected bool)
UpdateConnection updates connection-related metrics
func (*ServerMetrics) UpdateGRPCMetrics ¶
func (sm *ServerMetrics) UpdateGRPCMetrics(grpcMetrics *GRPCConnectionMetrics)
UpdateGRPCMetrics updates gRPC-specific metrics
func (*ServerMetrics) UpdatePerformanceMetrics ¶
func (sm *ServerMetrics) UpdatePerformanceMetrics(perfMetrics *pb.PerformanceMetrics)
UpdatePerformanceMetrics updates performance metrics from the collector
func (*ServerMetrics) UpdateSystemMetrics ¶
func (sm *ServerMetrics) UpdateSystemMetrics()
UpdateSystemMetrics updates system resource metrics
type ServerMetricsSnapshot ¶
type ServerMetricsSnapshot = pb.ServerMetrics
Type aliases for protobuf types to maintain API compatibility
type StreamAllocationStrategy ¶
type StreamAllocationStrategy int
StreamAllocationStrategy defines how streams are selected for load distribution
const ( RoundRobin StreamAllocationStrategy = iota HashBased LeastConnections WeightedRoundRobin )
func (StreamAllocationStrategy) String ¶
func (s StreamAllocationStrategy) String() string
String method for StreamAllocationStrategy enum
type StreamInfo ¶
type StreamInfo struct {
// contains filtered or unexported fields
}
StreamInfo tracks individual stream health and load
type StreamManager ¶
type StreamManager struct {
// contains filtered or unexported fields
}
StreamManager manages multiple gRPC streams for multiplexing with advanced load balancing
type StreamMetrics ¶
type StreamMetrics struct {
PacketsSent int64
PacketsReceived int64
LastLatency time.Duration
ErrorCount int64
LastError time.Time
}
StreamMetrics tracks performance metrics for individual streams
type SystemResourceMetrics ¶
type SystemResourceMetrics = pb.SystemResourceMetrics
Type aliases for protobuf types to maintain API compatibility
type ThroughputSample ¶
type ThroughputSample = pb.ThroughputSample
Type aliases for protobuf types to maintain API compatibility