|
- package app
-
- import "time"
-
- type FaultSeverity int
-
- const (
- FaultSeverityWarn FaultSeverity = iota
- FaultSeverityDegraded
- FaultSeverityMuted
- FaultSeverityFaulted
- )
-
- var faultSeverityNames = []string{"warn", "degraded", "muted", "faulted"}
-
- func (s FaultSeverity) String() string {
- if int(s) < 0 || int(s) >= len(faultSeverityNames) {
- return "unknown"
- }
- return faultSeverityNames[s]
- }
-
- // MarshalText implements encoding.TextMarshaler so that FaultSeverity
- // renders as a human-friendly string in JSON and other text contexts.
- func (s FaultSeverity) MarshalText() ([]byte, error) {
- return []byte(s.String()), nil
- }
-
- type FaultReason string
-
- const (
- FaultReasonUnknown FaultReason = "unknown"
- FaultReasonQueueCritical FaultReason = "queueCritical"
- FaultReasonLateBuffers FaultReason = "lateBuffers"
- FaultReasonWriteTimeout FaultReason = "writeTimeout"
- FaultReasonQueueEmpty FaultReason = "queueEmpty"
- )
-
- // FaultEvent captures a single fault observation along with its severity and
- // optional human-readable hint. Fault history and last-fault exposure rely on
- // this struct so operators can reason about runtime behavior.
- type FaultEvent struct {
- Time time.Time `json:"time"`
- Reason FaultReason `json:"reason"`
- Severity FaultSeverity `json:"severity"`
- Message string `json:"message,omitempty"`
- }
|