middleware

package
v0.7.3 Latest Latest
Warning

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

Go to latest
Published: Dec 11, 2025 License: Apache-2.0 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