Documentation
¶
Index ¶
- Constants
- func BodySchema(eventType string) string
- func EventTypes() []string
- func HashBody(body any) (string, error)
- func Validate(eventType string, body any, now time.Time, futureTolerance time.Duration) error
- type CoverageAssignment
- type CoverageCheckpoint
- type CoveragePlan
- type CoveragePlanAssignment
- type CoveragePlanPolicy
- type GroupObservation
- type RangeClaim
- type RangeComplete
- type RangeFailed
- type ScannerCapacity
- type ScannerHeartbeat
- type SchedulerAssignment
- type SchedulerNode
- type SchedulerWorkItem
- type TimeWindowClaim
Constants ¶
View Source
const ( TypeScannerCapacity = "ScannerCapacity" TypeScannerHeartbeat = "ScannerHeartbeat" TypeGroupObservation = "GroupObservation" TypeCoveragePlan = "CoveragePlan" TypeCoverageAssignment = "CoverageAssignment" TypeRangeClaim = "RangeClaim" TypeTimeWindowClaim = "TimeWindowClaim" TypeCoverageCheckpoint = "CoverageCheckpoint" TypeRangeComplete = "RangeComplete" TypeRangeFailed = "RangeFailed" ScannerCapacityBodySchema = "gonzbnet.ScannerCapacity/1.0" ScannerHeartbeatBodySchema = "gonzbnet.ScannerHeartbeat/1.0" GroupObservationBodySchema = "gonzbnet.GroupObservation/1.0" CoveragePlanBodySchema = "gonzbnet.CoveragePlan/1.0" CoverageAssignmentBodySchema = "gonzbnet.CoverageAssignment/1.0" RangeClaimBodySchema = "gonzbnet.RangeClaim/1.0" TimeWindowClaimBodySchema = "gonzbnet.TimeWindowClaim/1.0" CoverageCheckpointBodySchema = "gonzbnet.CoverageCheckpoint/1.0" RangeCompleteBodySchema = "gonzbnet.RangeComplete/1.0" RangeFailedBodySchema = "gonzbnet.RangeFailed/1.0" )
Variables ¶
This section is empty.
Functions ¶
func BodySchema ¶
func EventTypes ¶
func EventTypes() []string
Types ¶
type CoverageAssignment ¶
type CoverageAssignment struct {
SchemaVersion string `json:"schema_version"`
Type string `json:"type"`
AssignmentID string `json:"assignment_id"`
PlanID string `json:"-"`
PoolID string `json:"pool_id"`
Group string `json:"group"`
Mode string `json:"mode"`
Role string `json:"role"`
AssignedNodeID string `json:"assigned_node_id"`
ProviderScope string `json:"provider_scope_hash,omitempty"`
RangeStart int64 `json:"range_start,omitempty"`
RangeEnd int64 `json:"range_end,omitempty"`
WindowStart string `json:"window_start,omitempty"`
WindowEnd string `json:"window_end,omitempty"`
Priority int `json:"priority"`
DueAt string `json:"-"`
ExpiresAt string `json:"expires_at"`
CreatedAt string `json:"created_at"`
}
type CoverageCheckpoint ¶
type CoverageCheckpoint struct {
SchemaVersion string `json:"schema_version"`
Type string `json:"type"`
CheckpointID string `json:"checkpoint_id"`
PoolID string `json:"pool_id"`
NodeID string `json:"node_id"`
Group string `json:"group"`
ProviderScope string `json:"provider_scope_hash,omitempty"`
ClaimID string `json:"claim_id"`
RangeStart int64 `json:"range_start"`
RangeCurrent int64 `json:"range_current"`
RangeEnd int64 `json:"range_end"`
WindowStart string `json:"window_start,omitempty"`
WindowEnd string `json:"window_end,omitempty"`
ReleaseCardsEmitted int `json:"release_cards_emitted"`
ManifestsEmitted int `json:"manifests_emitted"`
Errors int `json:"errors"`
CheckedAt string `json:"checked_at"`
LowWatermark int64 `json:"-"`
HighWatermark int64 `json:"-"`
CreatedAt string `json:"-"`
}
type CoveragePlan ¶
type CoveragePlan struct {
SchemaVersion string `json:"schema_version"`
Type string `json:"type"`
PlanID string `json:"plan_id"`
PoolID string `json:"pool_id"`
Version int `json:"version"`
CreatedAt string `json:"created_at"`
CreatedByNodeID string `json:"created_by_node_id"`
RequiresPoolApproval bool `json:"requires_pool_approval"`
Policy CoveragePlanPolicy `json:"policy"`
Assignments []CoveragePlanAssignment `json:"assignments"`
Group string `json:"-"`
RangeStart int64 `json:"-"`
RangeEnd int64 `json:"-"`
WindowStart string `json:"-"`
WindowEnd string `json:"-"`
Priority int `json:"-"`
}
type CoveragePlanAssignment ¶
type CoveragePlanAssignment struct {
AssignmentID string `json:"assignment_id"`
Group string `json:"group"`
Mode string `json:"mode"`
PrimaryNodes []string `json:"primary_nodes"`
ValidatorNodes []string `json:"validator_nodes"`
ManifestBuilderNodes []string `json:"manifest_builder_nodes"`
Priority int `json:"priority"`
MinRedundancy int `json:"min_redundancy"`
}
type CoveragePlanPolicy ¶
type GroupObservation ¶
type GroupObservation struct {
SchemaVersion string `json:"schema_version"`
Type string `json:"type"`
ObservationID string `json:"observation_id"`
NodeID string `json:"node_id"`
PoolID string `json:"pool_id"`
Group string `json:"group"`
ProviderScope string `json:"provider_scope_hash,omitempty"`
ObservedAt string `json:"observed_at"`
LowWatermark int64 `json:"low_water"`
HighWatermark int64 `json:"high_water"`
EstimatedCount int64 `json:"estimated_count"`
PostsPerHourEstimate float64 `json:"posts_per_hour_estimate"`
ScanSupported bool `json:"scan_supported"`
RetentionDays int `json:"retention_days_observed"`
Confidence float64 `json:"confidence,omitempty"`
}
type RangeClaim ¶
type RangeClaim struct {
SchemaVersion string `json:"schema_version"`
Type string `json:"type"`
ClaimID string `json:"claim_id"`
AssignmentID string `json:"assignment_id"`
PoolID string `json:"pool_id"`
Group string `json:"group"`
NodeID string `json:"claimant_node_id"`
ProviderScope string `json:"provider_scope_hash,omitempty"`
RangeStart int64 `json:"range_start"`
RangeEnd int64 `json:"range_end"`
ClaimedAt string `json:"claimed_at"`
ExpiresAt string `json:"expires_at"`
ClaimMode string `json:"claim_mode"`
ExpectedCheckpointIntervalSeconds int `json:"expected_checkpoint_interval_seconds"`
}
type RangeComplete ¶
type RangeComplete struct {
SchemaVersion string `json:"schema_version"`
Type string `json:"type"`
OutcomeID string `json:"completion_id"`
ClaimID string `json:"claim_id"`
AssignmentID string `json:"-"`
PoolID string `json:"pool_id"`
Group string `json:"group"`
NodeID string `json:"node_id"`
ProviderScope string `json:"provider_scope_hash,omitempty"`
RangeStart int64 `json:"range_start"`
RangeEnd int64 `json:"range_end"`
ArticlesSeen int64 `json:"articles_seen"`
HeadersProcessed int64 `json:"headers_processed"`
ReleaseCount int `json:"release_cards_emitted"`
ManifestsEmitted int `json:"manifests_emitted"`
DedupCandidatesSkipped int `json:"dedup_candidates_skipped"`
ErrorCount int `json:"error_count"`
RangeFingerprint string `json:"range_fingerprint,omitempty"`
CompletedAt string `json:"completed_at"`
}
type RangeFailed ¶
type RangeFailed struct {
SchemaVersion string `json:"schema_version"`
Type string `json:"type"`
OutcomeID string `json:"failure_id"`
ClaimID string `json:"claim_id"`
AssignmentID string `json:"-"`
PoolID string `json:"pool_id"`
Group string `json:"group"`
NodeID string `json:"node_id"`
ProviderScope string `json:"provider_scope_hash,omitempty"`
RangeStart int64 `json:"range_start"`
RangeEnd int64 `json:"range_end"`
Reason string `json:"reason_code"`
Retryable bool `json:"retryable"`
FailedAt string `json:"failed_at"`
}
type ScannerCapacity ¶
type ScannerCapacity struct {
SchemaVersion string `json:"schema_version"`
Type string `json:"type"`
NodeID string `json:"node_id"`
PoolID string `json:"pool_id"`
CreatedAt string `json:"created_at"`
MaxGroups int `json:"max_groups"`
MaxArticlesPerHour int64 `json:"max_articles_per_hour"`
MaxHeaderBytesPerHour int64 `json:"max_header_bytes_per_hour,omitempty"`
PreferredGroupPatterns []string `json:"preferred_group_patterns,omitempty"`
ExcludedGroupPatterns []string `json:"excluded_group_patterns,omitempty"`
SupportsArticleRangeScan bool `json:"supports_article_range_scan"`
SupportsTimeWindowScan bool `json:"supports_time_window_scan"`
RetentionDaysObserved int `json:"retention_days_observed"`
ProviderScope string `json:"provider_scope_hash,omitempty"`
PublishedAt string `json:"-"`
Groups []string `json:"-"`
MaxRangesPerHour int `json:"-"`
MaxBytesPerHour int64 `json:"-"`
}
type ScannerHeartbeat ¶
type ScannerHeartbeat struct {
SchemaVersion string `json:"schema_version"`
Type string `json:"type"`
NodeID string `json:"node_id"`
PoolID string `json:"pool_id"`
CreatedAt string `json:"created_at"`
ActiveClaims []string `json:"active_claims"`
QueueDepth int `json:"queue_depth"`
CurrentArticlesPerMinute int64 `json:"current_articles_per_minute"`
Status string `json:"status"`
PublishedAt string `json:"-"`
Groups []string `json:"-"`
}
type SchedulerAssignment ¶
func RendezvousAssignments ¶
func RendezvousAssignments(work []SchedulerWorkItem, nodes []SchedulerNode) []SchedulerAssignment
type SchedulerNode ¶
type SchedulerWorkItem ¶
type TimeWindowClaim ¶
type TimeWindowClaim struct {
SchemaVersion string `json:"schema_version"`
Type string `json:"type"`
ClaimID string `json:"claim_id"`
AssignmentID string `json:"assignment_id"`
PoolID string `json:"pool_id"`
Group string `json:"group"`
NodeID string `json:"claimant_node_id"`
ProviderScope string `json:"provider_scope_hash,omitempty"`
WindowStart string `json:"window_start"`
WindowEnd string `json:"window_end"`
ClaimedAt string `json:"claimed_at"`
ExpiresAt string `json:"expires_at"`
ClaimMode string `json:"claim_mode"`
}
Click to show internal directories.
Click to hide internal directories.