influxdb/influxql/service.go

97 lines
2.3 KiB
Go
Raw Normal View History

package influxql
import (
"context"
"fmt"
"io"
"github.com/influxdata/influxdb/v2/kit/check"
)
// ProxyQueryService performs InfluxQL queries and encodes the result into a writer.
// The results are opaque to a ProxyQueryService.
type ProxyQueryService interface {
check.Checker
Query(ctx context.Context, w io.Writer, req *QueryRequest) (Statistics, error)
}
// ProxyMode enumerates the possible ProxyQueryService operating modes used by a downstream client.
type ProxyMode byte
const (
// ProxyModeHTTP specifies a ProxyQueryService that forwards InfluxQL requests via HTTP to influxqld.
ProxyModeHTTP ProxyMode = iota
// ProxyModeQueue specifies a ProxyQueryService that pushes InfluxQL requests to a queue and influxqld issues a callback request to the initiating service.
ProxyModeQueue
)
var proxyModeString = [...]string{
ProxyModeHTTP: "http",
ProxyModeQueue: "queue",
}
func (i ProxyMode) String() string {
if int(i) > len(proxyModeString) {
return "invalid"
}
return proxyModeString[i]
}
func (i *ProxyMode) Set(v string) (err error) {
switch v {
case "http":
*i = ProxyModeHTTP
case "queue":
*i = ProxyModeQueue
default:
err = fmt.Errorf("unexpected %s type: %s", i.Type(), v)
}
return err
}
func (i *ProxyMode) Type() string { return "proxy-mode" }
// RequestMode is enumerates the possible influxqld operating modes for receiving InfluxQL requests.
type RequestMode byte
const (
// RequestModeHTTP specifies the HTTP listener should be active.
RequestModeHTTP RequestMode = iota
// RequestModeQueue specifies the queue dispatcher should be active.
RequestModeQueue
// RequestModeAll specifies both the HTTP listener and queue dispatcher should be active.
RequestModeAll
)
var requestModeString = [...]string{
RequestModeHTTP: "http",
RequestModeQueue: "queue",
RequestModeAll: "all",
}
func (i RequestMode) String() string {
if int(i) > len(requestModeString) {
return "invalid"
}
return proxyModeString[i]
}
func (i *RequestMode) Set(v string) (err error) {
switch v {
case "http":
*i = RequestModeHTTP
case "queue":
*i = RequestModeQueue
case "all":
*i = RequestModeAll
default:
err = fmt.Errorf("unexpected %s type: %s", i.Type(), v)
}
return err
}
func (i *RequestMode) Type() string { return "request-mode" }