types

package
v1.1.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 12, 2026 License: AGPL-3.0 Imports: 2 Imported by: 0

Documentation

Overview

Package types defines shared data structures for ActivityPub federation.

Index

Constants

This section is empty.

Variables

View Source
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
	SharedInboxURL 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

type RoutingError struct {
	Code    string
	Message string
	Details map[string]any
}

RoutingError represents a routing error

func (*RoutingError) Error

func (e *RoutingError) Error() string

type SelectionOptions

type SelectionOptions struct {
	PreferReliability bool
	PreferSpeed       bool
	PreferCost        bool
	MaxLatency        time.Duration
	MaxCost           float64
	RequiredTier      TierLevel
}

SelectionOptions configures route selection

type TierLevel

type TierLevel string

TierLevel represents the service tier of an instance

const (
	TierPremium  TierLevel = "premium"
	TierStandard TierLevel = "standard"
	TierLimited  TierLevel = "limited"
	TierBlocked  TierLevel = "blocked"
)

Tier level constants

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL