frontend

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Sep 8, 2019 License: Apache-2.0 Imports: 42 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidLengthFrontend = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowFrontend   = fmt.Errorf("proto: integer overflow")
)

Functions

func ParseTime added in v1.0.0

func ParseTime(s string) (int64, error)

ParseTime parses the string into an int64, milliseconds since epoch.

func RegisterFrontendServer

func RegisterFrontendServer(s *grpc.Server, srv FrontendServer)

Types

type APIResponse added in v1.0.0

type APIResponse struct {
	Status    string             `protobuf:"bytes,1,opt,name=Status,json=status,proto3" json:"status"`
	Data      QueryRangeResponse `protobuf:"bytes,2,opt,name=Data,json=data,proto3" json:"data,omitempty"`
	ErrorType string             `protobuf:"bytes,3,opt,name=ErrorType,json=errorType,proto3" json:"errorType,omitempty"`
	Error     string             `protobuf:"bytes,4,opt,name=Error,json=error,proto3" json:"error,omitempty"`
}

func (*APIResponse) Descriptor added in v1.0.0

func (*APIResponse) Descriptor() ([]byte, []int)

func (*APIResponse) Equal added in v1.0.0

func (this *APIResponse) Equal(that interface{}) bool

func (*APIResponse) GetData added in v1.0.0

func (m *APIResponse) GetData() QueryRangeResponse

func (*APIResponse) GetError added in v1.0.0

func (m *APIResponse) GetError() string

func (*APIResponse) GetErrorType added in v1.0.0

func (m *APIResponse) GetErrorType() string

func (*APIResponse) GetStatus added in v1.0.0

func (m *APIResponse) GetStatus() string

func (*APIResponse) GoString added in v1.0.0

func (this *APIResponse) GoString() string

func (*APIResponse) Marshal added in v1.0.0

func (m *APIResponse) Marshal() (dAtA []byte, err error)

func (*APIResponse) MarshalTo added in v1.0.0

func (m *APIResponse) MarshalTo(dAtA []byte) (int, error)

func (*APIResponse) ProtoMessage added in v1.0.0

func (*APIResponse) ProtoMessage()

func (*APIResponse) Reset added in v1.0.0

func (m *APIResponse) Reset()

func (*APIResponse) Size added in v1.0.0

func (m *APIResponse) Size() (n int)

func (*APIResponse) String added in v1.0.0

func (this *APIResponse) String() string

func (*APIResponse) Unmarshal added in v1.0.0

func (m *APIResponse) Unmarshal(dAtA []byte) error

func (*APIResponse) XXX_DiscardUnknown added in v1.0.0

func (m *APIResponse) XXX_DiscardUnknown()

func (*APIResponse) XXX_Marshal added in v1.0.0

func (m *APIResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*APIResponse) XXX_Merge added in v1.0.0

func (m *APIResponse) XXX_Merge(src proto.Message)

func (*APIResponse) XXX_Size added in v1.0.0

func (m *APIResponse) XXX_Size() int

func (*APIResponse) XXX_Unmarshal added in v1.0.0

func (m *APIResponse) XXX_Unmarshal(b []byte) error

type CachedResponse added in v1.0.0

type CachedResponse struct {
	Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key"`
	// List of cached responses; non-overlapping and in order.
	Extents []Extent `protobuf:"bytes,2,rep,name=extents,proto3" json:"extents"`
}

func (*CachedResponse) Descriptor added in v1.0.0

func (*CachedResponse) Descriptor() ([]byte, []int)

func (*CachedResponse) Equal added in v1.0.0

func (this *CachedResponse) Equal(that interface{}) bool

func (*CachedResponse) GetExtents added in v1.0.0

func (m *CachedResponse) GetExtents() []Extent

func (*CachedResponse) GetKey added in v1.0.0

func (m *CachedResponse) GetKey() string

func (*CachedResponse) GoString added in v1.0.0

func (this *CachedResponse) GoString() string

func (*CachedResponse) Marshal added in v1.0.0

func (m *CachedResponse) Marshal() (dAtA []byte, err error)

func (*CachedResponse) MarshalTo added in v1.0.0

func (m *CachedResponse) MarshalTo(dAtA []byte) (int, error)

func (*CachedResponse) ProtoMessage added in v1.0.0

func (*CachedResponse) ProtoMessage()

func (*CachedResponse) Reset added in v1.0.0

func (m *CachedResponse) Reset()

func (*CachedResponse) Size added in v1.0.0

func (m *CachedResponse) Size() (n int)

func (*CachedResponse) String added in v1.0.0

func (this *CachedResponse) String() string

func (*CachedResponse) Unmarshal added in v1.0.0

func (m *CachedResponse) Unmarshal(dAtA []byte) error

func (*CachedResponse) XXX_DiscardUnknown added in v1.0.0

func (m *CachedResponse) XXX_DiscardUnknown()

func (*CachedResponse) XXX_Marshal added in v1.0.0

func (m *CachedResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*CachedResponse) XXX_Merge added in v1.0.0

func (m *CachedResponse) XXX_Merge(src proto.Message)

func (*CachedResponse) XXX_Size added in v1.0.0

func (m *CachedResponse) XXX_Size() int

func (*CachedResponse) XXX_Unmarshal added in v1.0.0

func (m *CachedResponse) XXX_Unmarshal(b []byte) error

type Config

type Config struct {
	MaxOutstandingPerTenant int  `yaml:"max_outstanding_per_tenant"`
	MaxRetries              int  `yaml:"max_retries"`
	SplitQueriesByDay       bool `yaml:"split_queries_by_day"`
	AlignQueriesWithStep    bool `yaml:"align_queries_with_step"`
	CacheResults            bool `yaml:"cache_results"`
	CompressResponses       bool `yaml:"compress_responses"`
	ResultsCacheConfig      `yaml:"results_cache"`
}

Config for a Frontend.

func (*Config) RegisterFlags

func (cfg *Config) RegisterFlags(f *flag.FlagSet)

RegisterFlags adds the flags required to config this to the given FlagSet.

type Extent added in v1.0.0

type Extent struct {
	Start    int64        `protobuf:"varint,1,opt,name=start,proto3" json:"start"`
	End      int64        `protobuf:"varint,2,opt,name=end,proto3" json:"end"`
	Response *APIResponse `protobuf:"bytes,3,opt,name=response,proto3" json:"response"`
}

func (*Extent) Descriptor added in v1.0.0

func (*Extent) Descriptor() ([]byte, []int)

func (*Extent) Equal added in v1.0.0

func (this *Extent) Equal(that interface{}) bool

func (*Extent) GetEnd added in v1.0.0

func (m *Extent) GetEnd() int64

func (*Extent) GetResponse added in v1.0.0

func (m *Extent) GetResponse() *APIResponse

func (*Extent) GetStart added in v1.0.0

func (m *Extent) GetStart() int64

func (*Extent) GoString added in v1.0.0

func (this *Extent) GoString() string

func (*Extent) Marshal added in v1.0.0

func (m *Extent) Marshal() (dAtA []byte, err error)

func (*Extent) MarshalTo added in v1.0.0

func (m *Extent) MarshalTo(dAtA []byte) (int, error)

func (*Extent) ProtoMessage added in v1.0.0

func (*Extent) ProtoMessage()

func (*Extent) Reset added in v1.0.0

func (m *Extent) Reset()

func (*Extent) Size added in v1.0.0

func (m *Extent) Size() (n int)

func (*Extent) String added in v1.0.0

func (this *Extent) String() string

func (*Extent) Unmarshal added in v1.0.0

func (m *Extent) Unmarshal(dAtA []byte) error

func (*Extent) XXX_DiscardUnknown added in v1.0.0

func (m *Extent) XXX_DiscardUnknown()

func (*Extent) XXX_Marshal added in v1.0.0

func (m *Extent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Extent) XXX_Merge added in v1.0.0

func (m *Extent) XXX_Merge(src proto.Message)

func (*Extent) XXX_Size added in v1.0.0

func (m *Extent) XXX_Size() int

func (*Extent) XXX_Unmarshal added in v1.0.0

func (m *Extent) XXX_Unmarshal(b []byte) error

type Frontend

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

Frontend queues HTTP requests, dispatches them to backends, and handles retries for requests which failed.

func New

func New(cfg Config, log log.Logger, limits *validation.Overrides) (*Frontend, error)

New creates a new frontend.

func (*Frontend) Close

func (f *Frontend) Close()

Close stops new requests and errors out any pending requests.

func (*Frontend) Handler

func (f *Frontend) Handler() http.Handler

Handler for HTTP requests.

func (*Frontend) Process

func (f *Frontend) Process(server Frontend_ProcessServer) error

Process allows backends to pull requests from the frontend.

func (*Frontend) RoundTrip

func (f *Frontend) RoundTrip(r *http.Request) (*http.Response, error)

RoundTrip implement http.Transport.

func (*Frontend) RoundTripGRPC

func (f *Frontend) RoundTripGRPC(ctx context.Context, req *ProcessRequest) (*ProcessResponse, error)

RoundTripGRPC round trips a proto (instread of a HTTP request).

type FrontendClient

type FrontendClient interface {
	Process(ctx context.Context, opts ...grpc.CallOption) (Frontend_ProcessClient, error)
}

FrontendClient is the client API for Frontend service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.

func NewFrontendClient

func NewFrontendClient(cc *grpc.ClientConn) FrontendClient

type FrontendServer

type FrontendServer interface {
	Process(Frontend_ProcessServer) error
}

FrontendServer is the server API for Frontend service.

type Frontend_ProcessClient

type Frontend_ProcessClient interface {
	Send(*ProcessResponse) error
	Recv() (*ProcessRequest, error)
	grpc.ClientStream
}

type Frontend_ProcessServer

type Frontend_ProcessServer interface {
	Send(*ProcessRequest) error
	Recv() (*ProcessResponse, error)
	grpc.ServerStream
}

type ProcessRequest

type ProcessRequest struct {
	HttpRequest       *httpgrpc.HTTPRequest `protobuf:"bytes,1,opt,name=httpRequest,proto3" json:"httpRequest,omitempty"`
	QueryRangeRequest *QueryRangeRequest    `protobuf:"bytes,2,opt,name=queryRangeRequest,proto3" json:"queryRangeRequest,omitempty"`
}

func (*ProcessRequest) Descriptor

func (*ProcessRequest) Descriptor() ([]byte, []int)

func (*ProcessRequest) Equal

func (this *ProcessRequest) Equal(that interface{}) bool

func (*ProcessRequest) GetHttpRequest

func (m *ProcessRequest) GetHttpRequest() *httpgrpc.HTTPRequest

func (*ProcessRequest) GetQueryRangeRequest

func (m *ProcessRequest) GetQueryRangeRequest() *QueryRangeRequest

func (*ProcessRequest) GoString

func (this *ProcessRequest) GoString() string

func (*ProcessRequest) Marshal

func (m *ProcessRequest) Marshal() (dAtA []byte, err error)

func (*ProcessRequest) MarshalTo

func (m *ProcessRequest) MarshalTo(dAtA []byte) (int, error)

func (*ProcessRequest) ProtoMessage

func (*ProcessRequest) ProtoMessage()

func (*ProcessRequest) Reset

func (m *ProcessRequest) Reset()

func (*ProcessRequest) Size

func (m *ProcessRequest) Size() (n int)

func (*ProcessRequest) String

func (this *ProcessRequest) String() string

func (*ProcessRequest) Unmarshal

func (m *ProcessRequest) Unmarshal(dAtA []byte) error

func (*ProcessRequest) XXX_DiscardUnknown

func (m *ProcessRequest) XXX_DiscardUnknown()

func (*ProcessRequest) XXX_Marshal

func (m *ProcessRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ProcessRequest) XXX_Merge

func (m *ProcessRequest) XXX_Merge(src proto.Message)

func (*ProcessRequest) XXX_Size

func (m *ProcessRequest) XXX_Size() int

func (*ProcessRequest) XXX_Unmarshal

func (m *ProcessRequest) XXX_Unmarshal(b []byte) error

type ProcessResponse

type ProcessResponse struct {
	HttpResponse *httpgrpc.HTTPResponse `protobuf:"bytes,1,opt,name=httpResponse,proto3" json:"httpResponse,omitempty"`
	ApiResponse  *APIResponse           `protobuf:"bytes,2,opt,name=apiResponse,proto3" json:"apiResponse,omitempty"`
}

func (*ProcessResponse) Descriptor

func (*ProcessResponse) Descriptor() ([]byte, []int)

func (*ProcessResponse) Equal

func (this *ProcessResponse) Equal(that interface{}) bool

func (*ProcessResponse) GetApiResponse

func (m *ProcessResponse) GetApiResponse() *APIResponse

func (*ProcessResponse) GetHttpResponse

func (m *ProcessResponse) GetHttpResponse() *httpgrpc.HTTPResponse

func (*ProcessResponse) GoString

func (this *ProcessResponse) GoString() string

func (*ProcessResponse) Marshal

func (m *ProcessResponse) Marshal() (dAtA []byte, err error)

func (*ProcessResponse) MarshalTo

func (m *ProcessResponse) MarshalTo(dAtA []byte) (int, error)

func (*ProcessResponse) ProtoMessage

func (*ProcessResponse) ProtoMessage()

func (*ProcessResponse) Reset

func (m *ProcessResponse) Reset()

func (*ProcessResponse) Size

func (m *ProcessResponse) Size() (n int)

func (*ProcessResponse) String

func (this *ProcessResponse) String() string

func (*ProcessResponse) Unmarshal

func (m *ProcessResponse) Unmarshal(dAtA []byte) error

func (*ProcessResponse) XXX_DiscardUnknown

func (m *ProcessResponse) XXX_DiscardUnknown()

func (*ProcessResponse) XXX_Marshal

func (m *ProcessResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ProcessResponse) XXX_Merge

func (m *ProcessResponse) XXX_Merge(src proto.Message)

func (*ProcessResponse) XXX_Size

func (m *ProcessResponse) XXX_Size() int

func (*ProcessResponse) XXX_Unmarshal

func (m *ProcessResponse) XXX_Unmarshal(b []byte) error

type QueryRangeRequest added in v1.0.0

type QueryRangeRequest struct {
	Path    string        `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"`
	Start   int64         `protobuf:"varint,2,opt,name=start,proto3" json:"start,omitempty"`
	End     int64         `protobuf:"varint,3,opt,name=end,proto3" json:"end,omitempty"`
	Step    int64         `protobuf:"varint,4,opt,name=step,proto3" json:"step,omitempty"`
	Timeout time.Duration `protobuf:"bytes,5,opt,name=timeout,proto3,stdduration" json:"timeout"`
	Query   string        `protobuf:"bytes,6,opt,name=query,proto3" json:"query,omitempty"`
}

func (*QueryRangeRequest) Descriptor added in v1.0.0

func (*QueryRangeRequest) Descriptor() ([]byte, []int)

func (*QueryRangeRequest) Equal added in v1.0.0

func (this *QueryRangeRequest) Equal(that interface{}) bool

func (*QueryRangeRequest) GetEnd added in v1.0.0

func (m *QueryRangeRequest) GetEnd() int64

func (*QueryRangeRequest) GetPath added in v1.0.0

func (m *QueryRangeRequest) GetPath() string

func (*QueryRangeRequest) GetQuery added in v1.0.0

func (m *QueryRangeRequest) GetQuery() string

func (*QueryRangeRequest) GetStart added in v1.0.0

func (m *QueryRangeRequest) GetStart() int64

func (*QueryRangeRequest) GetStep added in v1.0.0

func (m *QueryRangeRequest) GetStep() int64

func (*QueryRangeRequest) GetTimeout added in v1.0.0

func (m *QueryRangeRequest) GetTimeout() time.Duration

func (*QueryRangeRequest) GoString added in v1.0.0

func (this *QueryRangeRequest) GoString() string

func (*QueryRangeRequest) Marshal added in v1.0.0

func (m *QueryRangeRequest) Marshal() (dAtA []byte, err error)

func (*QueryRangeRequest) MarshalTo added in v1.0.0

func (m *QueryRangeRequest) MarshalTo(dAtA []byte) (int, error)

func (*QueryRangeRequest) ProtoMessage added in v1.0.0

func (*QueryRangeRequest) ProtoMessage()

func (*QueryRangeRequest) Reset added in v1.0.0

func (m *QueryRangeRequest) Reset()

func (*QueryRangeRequest) Size added in v1.0.0

func (m *QueryRangeRequest) Size() (n int)

func (*QueryRangeRequest) String added in v1.0.0

func (this *QueryRangeRequest) String() string

func (*QueryRangeRequest) Unmarshal added in v1.0.0

func (m *QueryRangeRequest) Unmarshal(dAtA []byte) error

func (*QueryRangeRequest) XXX_DiscardUnknown added in v1.0.0

func (m *QueryRangeRequest) XXX_DiscardUnknown()

func (*QueryRangeRequest) XXX_Marshal added in v1.0.0

func (m *QueryRangeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*QueryRangeRequest) XXX_Merge added in v1.0.0

func (m *QueryRangeRequest) XXX_Merge(src proto.Message)

func (*QueryRangeRequest) XXX_Size added in v1.0.0

func (m *QueryRangeRequest) XXX_Size() int

func (*QueryRangeRequest) XXX_Unmarshal added in v1.0.0

func (m *QueryRangeRequest) XXX_Unmarshal(b []byte) error

type QueryRangeResponse added in v1.0.0

type QueryRangeResponse struct {
	ResultType string         `protobuf:"bytes,1,opt,name=ResultType,json=resultType,proto3" json:"resultType"`
	Result     []SampleStream `protobuf:"bytes,2,rep,name=Result,json=result,proto3" json:"result"`
}

func (*QueryRangeResponse) Descriptor added in v1.0.0

func (*QueryRangeResponse) Descriptor() ([]byte, []int)

func (*QueryRangeResponse) Equal added in v1.0.0

func (this *QueryRangeResponse) Equal(that interface{}) bool

func (*QueryRangeResponse) GetResult added in v1.0.0

func (m *QueryRangeResponse) GetResult() []SampleStream

func (*QueryRangeResponse) GetResultType added in v1.0.0

func (m *QueryRangeResponse) GetResultType() string

func (*QueryRangeResponse) GoString added in v1.0.0

func (this *QueryRangeResponse) GoString() string

func (*QueryRangeResponse) Marshal added in v1.0.0

func (m *QueryRangeResponse) Marshal() (dAtA []byte, err error)

func (*QueryRangeResponse) MarshalTo added in v1.0.0

func (m *QueryRangeResponse) MarshalTo(dAtA []byte) (int, error)

func (*QueryRangeResponse) ProtoMessage added in v1.0.0

func (*QueryRangeResponse) ProtoMessage()

func (*QueryRangeResponse) Reset added in v1.0.0

func (m *QueryRangeResponse) Reset()

func (*QueryRangeResponse) Size added in v1.0.0

func (m *QueryRangeResponse) Size() (n int)

func (*QueryRangeResponse) String added in v1.0.0

func (this *QueryRangeResponse) String() string

func (*QueryRangeResponse) Unmarshal added in v1.0.0

func (m *QueryRangeResponse) Unmarshal(dAtA []byte) error

func (*QueryRangeResponse) XXX_DiscardUnknown added in v1.0.0

func (m *QueryRangeResponse) XXX_DiscardUnknown()

func (*QueryRangeResponse) XXX_Marshal added in v1.0.0

func (m *QueryRangeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*QueryRangeResponse) XXX_Merge added in v1.0.0

func (m *QueryRangeResponse) XXX_Merge(src proto.Message)

func (*QueryRangeResponse) XXX_Size added in v1.0.0

func (m *QueryRangeResponse) XXX_Size() int

func (*QueryRangeResponse) XXX_Unmarshal added in v1.0.0

func (m *QueryRangeResponse) XXX_Unmarshal(b []byte) error

type ResultsCacheConfig added in v1.0.0

type ResultsCacheConfig struct {
	CacheConfig       cache.Config  `yaml:"cache"`
	MaxCacheFreshness time.Duration `yaml:"max_freshness"`
}

ResultsCacheConfig is the config for the results cache.

func (*ResultsCacheConfig) RegisterFlags added in v1.0.0

func (cfg *ResultsCacheConfig) RegisterFlags(f *flag.FlagSet)

RegisterFlags registers flags.

type RoundTripperFunc added in v1.0.0

type RoundTripperFunc func(*http.Request) (*http.Response, error)

RoundTripperFunc is like http.HandlerFunc, but for http.RoundTripper.

func (RoundTripperFunc) RoundTrip added in v1.0.0

func (fn RoundTripperFunc) RoundTrip(req *http.Request) (*http.Response, error)

RoundTrip implements http.RoundTripper.

type SampleStream added in v1.0.0

type SampleStream struct {
	Labels  []github_com_cortexproject_cortex_pkg_ingester_client.LabelAdapter `` /* 131-byte string literal not displayed */
	Samples []client.Sample                                                    `protobuf:"bytes,2,rep,name=samples,proto3" json:"values"`
}

func (*SampleStream) Descriptor added in v1.0.0

func (*SampleStream) Descriptor() ([]byte, []int)

func (*SampleStream) Equal added in v1.0.0

func (this *SampleStream) Equal(that interface{}) bool

func (*SampleStream) GetSamples added in v1.0.0

func (m *SampleStream) GetSamples() []client.Sample

func (*SampleStream) GoString added in v1.0.0

func (this *SampleStream) GoString() string

func (*SampleStream) Marshal added in v1.0.0

func (m *SampleStream) Marshal() (dAtA []byte, err error)

func (*SampleStream) MarshalJSON added in v1.0.0

func (s *SampleStream) MarshalJSON() ([]byte, error)

MarshalJSON implements json.Marshaler.

func (*SampleStream) MarshalTo added in v1.0.0

func (m *SampleStream) MarshalTo(dAtA []byte) (int, error)

func (*SampleStream) ProtoMessage added in v1.0.0

func (*SampleStream) ProtoMessage()

func (*SampleStream) Reset added in v1.0.0

func (m *SampleStream) Reset()

func (*SampleStream) Size added in v1.0.0

func (m *SampleStream) Size() (n int)

func (*SampleStream) String added in v1.0.0

func (this *SampleStream) String() string

func (*SampleStream) Unmarshal added in v1.0.0

func (m *SampleStream) Unmarshal(dAtA []byte) error

func (*SampleStream) UnmarshalJSON added in v1.0.0

func (s *SampleStream) UnmarshalJSON(data []byte) error

UnmarshalJSON implements json.Unmarshaler.

func (*SampleStream) XXX_DiscardUnknown added in v1.0.0

func (m *SampleStream) XXX_DiscardUnknown()

func (*SampleStream) XXX_Marshal added in v1.0.0

func (m *SampleStream) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*SampleStream) XXX_Merge added in v1.0.0

func (m *SampleStream) XXX_Merge(src proto.Message)

func (*SampleStream) XXX_Size added in v1.0.0

func (m *SampleStream) XXX_Size() int

func (*SampleStream) XXX_Unmarshal added in v1.0.0

func (m *SampleStream) XXX_Unmarshal(b []byte) error

type Worker

type Worker interface {
	Stop()
}

Worker is the counter-part to the frontend, actually processing requests.

func NewWorker

func NewWorker(cfg WorkerConfig, server *server.Server, log log.Logger) (Worker, error)

NewWorker creates a new Worker.

type WorkerConfig

type WorkerConfig struct {
	Address           string
	Parallelism       int
	DNSLookupDuration time.Duration

	GRPCClientConfig grpcclient.Config `yaml:"grpc_client_config"`
}

WorkerConfig is config for a worker.

func (*WorkerConfig) RegisterFlags

func (cfg *WorkerConfig) RegisterFlags(f *flag.FlagSet)

RegisterFlags adds the flags required to config this to the given FlagSet.

Jump to

Keyboard shortcuts

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