Documentation
¶
Overview ¶
Package types defines shared data structures for ActivityPub federation.
Index ¶
- Variables
- type CircuitStatus
- type DeliveryOptions
- type DeliveryPriority
- type DeliveryResult
- type FederationMessage
- type HealthStatus
- type Instance
- type InstanceStatus
- type MessageType
- type QueueMetrics
- type QueueStatus
- type QueuedMessage
- type RateLimits
- type Route
- type RouteMetrics
- type RoutingConfig
- type RoutingError
- type SelectionOptions
- type TierLevel
Constants ¶
This section is empty.
Variables ¶
var ( ErrNoHealthyRoutes = &RoutingError{Code: "NO_HEALTHY_ROUTES", Message: "No healthy routes available"} ErrCircuitOpen = &RoutingError{Code: "CIRCUIT_OPEN", Message: "Circuit breaker is open"} ErrQuotaExceeded = &RoutingError{Code: "QUOTA_EXCEEDED", Message: "Instance quota exceeded"} ErrInstanceBlocked = &RoutingError{Code: "INSTANCE_BLOCKED", Message: "Instance is blocked"} ErrMessageExpired = &RoutingError{Code: "MESSAGE_EXPIRED", Message: "Message has expired"} )
Errors
Functions ¶
This section is empty.
Types ¶
type CircuitStatus ¶
type CircuitStatus string
CircuitStatus represents circuit breaker status
const ( CircuitClosed CircuitStatus = "closed" CircuitOpen CircuitStatus = "open" CircuitHalfOpen CircuitStatus = "half_open" )
Circuit status constants
type DeliveryOptions ¶
type DeliveryOptions struct {
Priority DeliveryPriority
MaxRetries int
RetryBackoff time.Duration
Timeout time.Duration
RequireSignature bool
CompressPayload bool
}
DeliveryOptions configures message delivery
type DeliveryPriority ¶
type DeliveryPriority int
DeliveryPriority defines message priority levels
const ( PriorityUrgent DeliveryPriority = 1 PriorityHigh DeliveryPriority = 2 PriorityNormal DeliveryPriority = 3 PriorityLow DeliveryPriority = 4 PriorityBulk DeliveryPriority = 5 )
Delivery priority constants
type DeliveryResult ¶
type DeliveryResult struct {
MessageID string
InstanceID string
RouteID string
Success bool
StatusCode int
ErrorMessage string
Attempts int
Duration time.Duration
BytesSent int64
Cost float64
Timestamp time.Time
}
DeliveryResult represents the result of a delivery attempt
type FederationMessage ¶
type FederationMessage struct {
ID string
Type MessageType
Actor string
Object any
Target []string
Payload []byte
PayloadSize int64
ContentType string
CreatedAt time.Time
ExpiresAt time.Time
}
FederationMessage represents a message to be delivered
type HealthStatus ¶
type HealthStatus struct {
Timestamp time.Time
Reachable bool
ResponseTime time.Duration
StatusCode int
ErrorMessage string
// Resource usage
CPUUsage float64
MemoryUsage float64
DiskUsage float64
// Federation metrics
InboxBacklog int
ProcessingDelay time.Duration
ErrorRate float64
}
HealthStatus represents instance health metrics
type Instance ¶
type Instance struct {
ID string
Domain string
InboxURL string
PublicKeyPEM string
// Capabilities
SupportedTypes []MessageType
MaxMessageSize int64
RateLimits RateLimits
// Status
Status InstanceStatus
LastSeen time.Time
RegisteredAt time.Time
// Performance metrics
AvgResponseTime time.Duration
SuccessRate float64
ErrorRate float64
// Cost tracking
TierLevel TierLevel
MonthlyQuota int64
CurrentUsage int64
}
Instance represents a federated instance
type InstanceStatus ¶
type InstanceStatus string
InstanceStatus represents the status of an instance
const ( InstanceStatusActive InstanceStatus = "active" InstanceStatusDegraded InstanceStatus = "degraded" InstanceStatusUnreachable InstanceStatus = "unreachable" InstanceStatusBlocked InstanceStatus = "blocked" InstanceStatusUnknown InstanceStatus = "unknown" )
Instance status constants
type MessageType ¶
type MessageType string
MessageType represents the type of federation message
const ( MessageTypeActivity MessageType = "activity" MessageTypeFollow MessageType = "follow" MessageTypeAnnounce MessageType = "announce" MessageTypeLike MessageType = "like" MessageTypeCreate MessageType = "create" MessageTypeUpdate MessageType = "update" MessageTypeDelete MessageType = "delete" MessageTypeUndo MessageType = "undo" MessageTypeBlock MessageType = "block" MessageTypeFlag MessageType = "flag" )
Message type constants
type QueueMetrics ¶
type QueueMetrics struct {
Depth int64
ProcessingCount int64
RetryCount int64
DLQCount int64
EnqueueRate float64
DequeueRate float64
SuccessRate float64
AvgWaitTime time.Duration
AvgProcessTime time.Duration
}
QueueMetrics contains queue performance metrics
type QueueStatus ¶
type QueueStatus string
QueueStatus represents message queue status
const ( QueueStatusPending QueueStatus = "pending" QueueStatusProcessing QueueStatus = "processing" QueueStatusRetrying QueueStatus = "retrying" QueueStatusFailed QueueStatus = "failed" QueueStatusDelivered QueueStatus = "delivered" QueueStatusExpired QueueStatus = "expired" )
Queue status constants
type QueuedMessage ¶
type QueuedMessage struct {
Message *FederationMessage
Options DeliveryOptions
QueuedAt time.Time
Attempts int
LastAttempt time.Time
NextRetry time.Time
RouteID string
Status QueueStatus
}
QueuedMessage represents a message in the delivery queue
type RateLimits ¶
type RateLimits struct {
MessagesPerMinute int
MessagesPerHour int
BytesPerMinute int64
BytesPerHour int64
BurstSize int
}
RateLimits defines rate limiting configuration
type Route ¶
type Route struct {
ID string
InstanceID string
Domain string
Endpoint *url.URL
Priority int // Lower is higher priority
// Performance
Latency time.Duration
Bandwidth int64 // bytes per second
PacketLoss float64
// Reliability
SuccessRate float64
LastSuccess time.Time
LastFailure time.Time
ConsecutiveFails int
// Circuit breaker
CircuitStatus CircuitStatus
CircuitOpenedAt time.Time
// Cost
CostPerMessage float64
CostPerByte float64
}
Route represents a delivery route to an instance
type RouteMetrics ¶
type RouteMetrics struct {
TotalMessages int64
SuccessfulCount int64
FailedCount int64
RetryCount int64
AvgLatency time.Duration
P95Latency time.Duration
P99Latency time.Duration
TotalBytes int64
TotalCost float64
LastUpdated time.Time
}
RouteMetrics contains routing performance metrics
type RoutingConfig ¶
type RoutingConfig struct {
// Health checking
HealthCheckInterval time.Duration
HealthCheckTimeout time.Duration
UnhealthyThreshold int
HealthyThreshold int
// Circuit breaker
CircuitBreakerThreshold int
CircuitBreakerTimeout time.Duration
HalfOpenMaxAttempts int
// Routing
MaxRoutesPerInstance int
RouteSelectionAlgorithm string
EnableLoadBalancing bool
EnableCostOptimization bool
// Delivery
DefaultTimeout time.Duration
MaxRetries int
RetryBackoff time.Duration
MaxQueueDepth int64
// Performance
EnableCompression bool
BatchDeliverySize int
ParallelDeliveries int
}
RoutingConfig configures the routing system
type RoutingError ¶
RoutingError represents a routing error
func (*RoutingError) Error ¶
func (e *RoutingError) Error() string