mirror of
https://github.com/kubenetworks/kubevpn.git
synced 2025-12-24 11:51:13 +08:00
feat: add vendor
This commit is contained in:
65
vendor/github.com/envoyproxy/go-control-plane/pkg/server/rest/v3/server.go
generated
vendored
Normal file
65
vendor/github.com/envoyproxy/go-control-plane/pkg/server/rest/v3/server.go
generated
vendored
Normal file
@@ -0,0 +1,65 @@
|
||||
// Copyright 2020 Envoyproxy Authors
|
||||
//
|
||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||
// you may not use this file except in compliance with the License.
|
||||
// You may obtain a copy of the License at
|
||||
//
|
||||
// http://www.apache.org/licenses/LICENSE-2.0
|
||||
//
|
||||
// Unless required by applicable law or agreed to in writing, software
|
||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
// Package rest provides an implementation of REST-JSON part of XDS server
|
||||
package rest
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
discovery "github.com/envoyproxy/go-control-plane/envoy/service/discovery/v3"
|
||||
"github.com/envoyproxy/go-control-plane/pkg/cache/v3"
|
||||
)
|
||||
|
||||
type Server interface {
|
||||
Fetch(context.Context, *discovery.DiscoveryRequest) (*discovery.DiscoveryResponse, error)
|
||||
}
|
||||
|
||||
type Callbacks interface {
|
||||
// OnFetchRequest is called for each Fetch request. Returning an error will end processing of the
|
||||
// request and respond with an error.
|
||||
OnFetchRequest(context.Context, *discovery.DiscoveryRequest) error
|
||||
// OnFetchResponse is called immediately prior to sending a response.
|
||||
OnFetchResponse(*discovery.DiscoveryRequest, *discovery.DiscoveryResponse)
|
||||
}
|
||||
|
||||
func NewServer(config cache.ConfigFetcher, callbacks Callbacks) Server {
|
||||
return &server{cache: config, callbacks: callbacks}
|
||||
}
|
||||
|
||||
type server struct {
|
||||
cache cache.ConfigFetcher
|
||||
callbacks Callbacks
|
||||
}
|
||||
|
||||
func (s *server) Fetch(ctx context.Context, req *discovery.DiscoveryRequest) (*discovery.DiscoveryResponse, error) {
|
||||
if s.callbacks != nil {
|
||||
if err := s.callbacks.OnFetchRequest(ctx, req); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
resp, err := s.cache.Fetch(ctx, req)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if resp == nil {
|
||||
return nil, errors.New("missing response")
|
||||
}
|
||||
out, err := resp.GetDiscoveryResponse()
|
||||
if s.callbacks != nil {
|
||||
s.callbacks.OnFetchResponse(req, out)
|
||||
}
|
||||
return out, err
|
||||
}
|
||||
Reference in New Issue
Block a user