handler

package
v0.4.101 Latest Latest
Warning

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

Go to latest
Published: Feb 23, 2024 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Overview

Package handler provides a client and handlers for responding to locate requests.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	Signer

	LocatorV2
	ClientLocator
	PrometheusClient
	// contains filtered or unexported fields
}

Client contains state needed for xyz.

func NewClient

func NewClient(project string, private Signer, locatorV2 LocatorV2, client ClientLocator, prom PrometheusClient, lmts limits.Agents) *Client

NewClient creates a new client.

func NewClientDirect

func NewClientDirect(project string, private Signer, locatorV2 LocatorV2, client ClientLocator, prom PrometheusClient) *Client

NewClientDirect creates a new client with a target template using only the target machine.

func (*Client) Heartbeat

func (c *Client) Heartbeat(rw http.ResponseWriter, req *http.Request)

Heartbeat implements /v2/heartbeat requests. It starts a new persistent connection and a new goroutine to read incoming messages.

func (*Client) Live

func (c *Client) Live(rw http.ResponseWriter, req *http.Request)

Live is a minimal handler to indicate that the server is operating at all.

func (*Client) Monitoring

func (c *Client) Monitoring(rw http.ResponseWriter, req *http.Request)

Monitoring issues access tokens for end to end monitoring requests.

func (*Client) Nearest

func (c *Client) Nearest(rw http.ResponseWriter, req *http.Request)

Nearest uses an implementation of the LocatorV2 interface to look up nearest servers.

func (*Client) Prometheus

func (c *Client) Prometheus(rw http.ResponseWriter, req *http.Request)

Prometheus is a handler that collects Prometheus health signals.

func (*Client) Ready

func (c *Client) Ready(rw http.ResponseWriter, req *http.Request)

Ready reports whether the server is working as expected and ready to serve requests.

type ClientLocator

type ClientLocator interface {
	Locate(req *http.Request) (*clientgeo.Location, error)
}

ClientLocator defines the interfeace for looking up the client geo location.

type LocatorV2

type LocatorV2 interface {
	Nearest(service string, lat, lon float64, opts *heartbeat.NearestOptions) (*heartbeat.TargetInfo, error)
	heartbeat.StatusTracker
}

LocatorV2 defines how the Nearest handler requests machines nearest to the client.

type PrometheusClient

type PrometheusClient interface {
	Query(ctx context.Context, query string, ts time.Time, opts ...prom.Option) (model.Value, prom.Warnings, error)
}

PrometheusClient defines the interface to query Prometheus.

type Signer

type Signer interface {
	Sign(cl jwt.Claims) (string, error)
}

Signer defines how access tokens are signed.

Jump to

Keyboard shortcuts

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