middleware

package
v0.1.7 Latest Latest
Warning

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

Go to latest
Published: Oct 28, 2025 License: MIT Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ConsistencyConfig

type ConsistencyConfig struct {
	DefaultLevel ConsistencyLevel
	MaxStaleness time.Duration
}

ConsistencyConfig contains consistency middleware configuration

type ConsistencyLevel

type ConsistencyLevel int

ConsistencyLevel represents the consistency level for reads

const (
	// ConsistencyLinearizable provides linearizable reads (strongest)
	ConsistencyLinearizable ConsistencyLevel = iota
	// ConsistencyBounded provides bounded staleness reads
	ConsistencyBounded
	// ConsistencyEventual allows eventually consistent reads (weakest)
	ConsistencyEventual
)

func (ConsistencyLevel) String

func (cl ConsistencyLevel) String() string

String returns string representation of consistency level

type ConsistencyMiddleware

type ConsistencyMiddleware struct {
	// contains filtered or unexported fields
}

ConsistencyMiddleware enforces consistency guarantees

func NewConsistencyMiddleware

func NewConsistencyMiddleware(
	raftNode internal.RaftNode,
	config ConsistencyConfig,
	logger forge.Logger,
) *ConsistencyMiddleware

NewConsistencyMiddleware creates consistency middleware

func (*ConsistencyMiddleware) Handle

func (cm *ConsistencyMiddleware) Handle() func(forge.Context) error

Handle enforces consistency level

type LeadershipMiddleware

type LeadershipMiddleware struct {
	// contains filtered or unexported fields
}

LeadershipMiddleware provides middleware for leadership enforcement

func NewLeadershipMiddleware

func NewLeadershipMiddleware(service internal.ConsensusService, logger forge.Logger) *LeadershipMiddleware

NewLeadershipMiddleware creates a new leadership middleware

func (*LeadershipMiddleware) LeaderRedirect

func (lm *LeadershipMiddleware) LeaderRedirect(next func(forge.Context) error) func(forge.Context) error

LeaderRedirect redirects to the leader if not leader

func (*LeadershipMiddleware) ReadOnlyRouting

func (lm *LeadershipMiddleware) ReadOnlyRouting(next func(forge.Context) error) func(forge.Context) error

ReadOnlyRouting allows reads on any node but writes only on leader

func (*LeadershipMiddleware) RequireLeader

func (lm *LeadershipMiddleware) RequireLeader(next func(forge.Context) error) func(forge.Context) error

RequireLeader enforces that the current node is the leader

type MetricsMiddleware

type MetricsMiddleware struct {
	// contains filtered or unexported fields
}

MetricsMiddleware adds consensus metrics to responses

func NewMetricsMiddleware

func NewMetricsMiddleware(service internal.ConsensusService, logger forge.Logger) *MetricsMiddleware

NewMetricsMiddleware creates a new metrics middleware

func (*MetricsMiddleware) AddConsensusHeaders

func (mm *MetricsMiddleware) AddConsensusHeaders(next func(forge.Context) error) func(forge.Context) error

AddConsensusHeaders adds consensus-related headers to responses

type QuorumMiddleware

type QuorumMiddleware struct {
	// contains filtered or unexported fields
}

QuorumMiddleware ensures cluster has quorum

func NewQuorumMiddleware

func NewQuorumMiddleware(service internal.ConsensusService, logger forge.Logger) *QuorumMiddleware

NewQuorumMiddleware creates a new quorum middleware

func (*QuorumMiddleware) RequireQuorum

func (qm *QuorumMiddleware) RequireQuorum(next func(forge.Context) error) func(forge.Context) error

RequireQuorum enforces that the cluster has quorum

type ReadOnlyMiddleware

type ReadOnlyMiddleware struct {
	// contains filtered or unexported fields
}

ReadOnlyMiddleware routes read-only requests to any node

func NewReadOnlyMiddleware

func NewReadOnlyMiddleware(raftNode internal.RaftNode, logger forge.Logger) *ReadOnlyMiddleware

NewReadOnlyMiddleware creates read-only middleware

func (*ReadOnlyMiddleware) Handle

func (rom *ReadOnlyMiddleware) Handle() func(forge.Context) error

Handle allows read-only requests on any node

func (*ReadOnlyMiddleware) HandleStrict

func (rom *ReadOnlyMiddleware) HandleStrict() func(forge.Context) error

HandleStrict enforces leadership even for reads

func (*ReadOnlyMiddleware) HandleWithStaleReads

func (rom *ReadOnlyMiddleware) HandleWithStaleReads() func(forge.Context) error

HandleWithStaleReads allows stale reads on followers

type RedirectMiddleware

type RedirectMiddleware struct {
	// contains filtered or unexported fields
}

RedirectMiddleware redirects requests to the leader

func NewRedirectMiddleware

func NewRedirectMiddleware(raftNode internal.RaftNode, manager *cluster.Manager, logger forge.Logger) *RedirectMiddleware

NewRedirectMiddleware creates redirect middleware

func (*RedirectMiddleware) Handle

func (rm *RedirectMiddleware) Handle() func(forge.Context) error

Handle redirects non-leader requests to the leader

func (*RedirectMiddleware) HandleWithAutoRedirect

func (rm *RedirectMiddleware) HandleWithAutoRedirect() func(forge.Context) error

HandleWithAutoRedirect performs HTTP redirect

func (*RedirectMiddleware) HandleWithForward

func (rm *RedirectMiddleware) HandleWithForward() func(forge.Context) error

HandleWithForward forwards request to leader (proxy)

Jump to

Keyboard shortcuts

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