Documentation
¶
Overview ¶
Package network is the facade of the network module: admin-side server and node management, the node-facing server API and the edge client manifest. See docs/design/adr-001-modular-monolith.md.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var ErrManifestNotFound = edge.ErrManifestNotFound
ErrManifestNotFound re-exports the edge subdomain's not-found sentinel for the transport handler's status mapping.
Functions ¶
func NewRepoBuilder ¶ added in v1.15.2
func NewRepoBuilder(rds *redis.Client) repository.NetworkBuilder
NewRepoBuilder exports the module-owned repository implementations for store assembly. The node cache retrier is a background singleton that survives per-transaction rebuilds, so it lives in this closure (ADR-001 step-6 preparation).
Types ¶
type Deps ¶
type Deps struct {
Store Store
TrafficUsage subscription.TrafficUsage
Redis *redis.Client
// Config snapshots the runtime-mutable settings per request.
Config func() Snapshot
// Multiplier returns the node traffic multiplier in effect at the given
// time; nil means no multiplier is configured.
Multiplier func(at time.Time) float32
}
Deps declares everything the module needs; the composition root (internal/app) provides them. The module wraps the legacy store during migration and will own its persistence once the domain data moves in (ADR-001 step 5).
type MultiplierManager ¶ added in v1.20.2
type MultiplierManager = multiplier.Manager
MultiplierManager and MultiplierPeriod expose the network-owned runtime configuration to application assembly without exporting its implementation.
func NewMultiplierManager ¶ added in v1.20.2
func NewMultiplierManager(periods []MultiplierPeriod) *MultiplierManager
type MultiplierPeriod ¶ added in v1.20.2
type MultiplierPeriod = multiplier.TimePeriod
type RequestMeta ¶
type RequestMeta = serverapi.RequestMeta
RequestMeta and ResponseMeta re-export the server API's conditional-request negotiation types for the transport handlers.
type ResponseMeta ¶
type ResponseMeta = serverapi.ResponseMeta
RequestMeta and ResponseMeta re-export the server API's conditional-request negotiation types for the transport handlers.
type Service ¶
type Service interface {
// Admin-side server and node management.
CreateServer(ctx context.Context, req *dto.CreateServerRequest) error
UpdateServer(ctx context.Context, req *dto.UpdateServerRequest) error
DeleteServer(ctx context.Context, req *dto.DeleteServerRequest) error
FilterServerList(ctx context.Context, req *dto.FilterServerListRequest) (*dto.FilterServerListResponse, error)
ResetSortWithServer(ctx context.Context, req *dto.ResetSortRequest) error
GetServerProtocols(ctx context.Context, req *dto.GetServerProtocolsRequest) (*dto.GetServerProtocolsResponse, error)
GetServerNodeConfig(ctx context.Context, req *dto.GetServerNodeConfigRequest) (*dto.GetServerNodeConfigResponse, error)
UpdateServerNodeConfig(ctx context.Context, req *dto.UpdateServerNodeConfigRequest) error
CreateNode(ctx context.Context, req *dto.CreateNodeRequest) error
UpdateNode(ctx context.Context, req *dto.UpdateNodeRequest) error
DeleteNode(ctx context.Context, req *dto.DeleteNodeRequest) error
FilterNodeList(ctx context.Context, req *dto.FilterNodeListRequest) (*dto.FilterNodeListResponse, error)
ToggleNodeStatus(ctx context.Context, req *dto.ToggleNodeStatusRequest) error
ResetSortWithNode(ctx context.Context, req *dto.ResetSortRequest) error
QueryNodeTag(ctx context.Context) (*dto.QueryNodeTagResponse, error)
// The node-facing server API. The ETag negotiation flows through
// RequestMeta/ResponseMeta; node authentication stays in the handlers.
GetServerConfig(ctx context.Context, req *dto.GetServerConfigRequest, meta RequestMeta) (*dto.GetServerConfigResponse, ResponseMeta, error)
GetServerUserList(ctx context.Context, req *dto.GetServerUserListRequest, meta RequestMeta) (*dto.GetServerUserListResponse, ResponseMeta, error)
QueryServerProtocolConfig(ctx context.Context, req *dto.QueryServerConfigRequest) (*dto.QueryServerConfigResponse, error)
PushOnlineUsers(ctx context.Context, req *dto.OnlineUsersRequest) error
ServerPushStatus(ctx context.Context, req *dto.ServerPushStatusRequest) error
ServerPushUserTraffic(ctx context.Context, req *dto.ServerPushUserTrafficRequest) error
// EdgeManifest serves the token-authenticated edge client manifest.
EdgeManifest(ctx context.Context, token string) (*dto.EdgeManifestResponse, error)
}
Service is the only surface other code may depend on; the implementation lives under internal/ where the compiler seals it off.
type Snapshot ¶
type Snapshot struct {
Node config.NodeConfig
Subscribe config.SubscribeConfig
}
Snapshot is the per-request view of the runtime-mutable settings the network flows consume.
type Store ¶ added in v1.20.3
Store is the persistence capability required by this package. It excludes unrelated repositories and application-wide transactions.
type TrafficAggregator ¶ added in v1.20.3
type TrafficAggregator = trafficagg.Aggregator
TrafficAggregator is the network-owned pipeline shared by node reports and scheduled flush tasks. Queue adapters enter through this facade.
func NewTrafficAggregator ¶ added in v1.20.3
func NewTrafficAggregator(deps TrafficAggregatorDeps) *TrafficAggregator
type TrafficAggregatorDeps ¶ added in v1.20.3
type TrafficAggregatorDeps = trafficagg.Deps
type UserTraffic ¶ added in v1.20.3
type UserTraffic = trafficagg.UserTraffic
Directories
¶
| Path | Synopsis |
|---|---|
|
entity
|
|
|
internal
|
|
|
adminserver
Service assembly for the admin-side server and node management subdomain of the network module.
|
Service assembly for the admin-side server and node management subdomain of the network module. |
|
edge
Service assembly for the edge subdomain of the network module: the token- authenticated client manifest.
|
Service assembly for the edge subdomain of the network module: the token- authenticated client manifest. |
|
edgeauth
Package edgeauth authenticates Cloudflare edge-subscribe Workers.
|
Package edgeauth authenticates Cloudflare edge-subscribe Workers. |
|
serverapi
Service assembly for the node-facing server API subdomain of the network module: config pulls, user lists, status/traffic pushes.
|
Service assembly for the node-facing server API subdomain of the network module: config pulls, user lists, status/traffic pushes. |
|
transport
|
|