Skip to content

Commit

Permalink
add default registry client chains
Browse files Browse the repository at this point in the history
Signed-off-by: denis-tingajkin <denis.tingajkin@xored.com>
  • Loading branch information
denis-tingaikin committed Feb 1, 2021
1 parent eae1be2 commit 452f0d1
Showing 1 changed file with 63 additions and 0 deletions.
63 changes: 63 additions & 0 deletions pkg/registry/chains/client/client.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
// Copyright (c) 2021 Doc.ai and/or its affiliates.
//
// SPDX-License-Identifier: Apache-2.0
//
// 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 client provides a simple functions for building a NetworkServiceEndpointRegistryClient, NetworkServiceRegistryClient
package client

import (
"context"

"github.com/networkservicemesh/api/pkg/api/registry"
"google.golang.org/grpc"

"github.com/networkservicemesh/sdk/pkg/registry/common/interpose"
"github.com/networkservicemesh/sdk/pkg/registry/common/refresh"
"github.com/networkservicemesh/sdk/pkg/registry/common/sendfd"
"github.com/networkservicemesh/sdk/pkg/registry/core/chain"
"github.com/networkservicemesh/sdk/pkg/registry/core/next"
)

// NewNetworkServiceEndpointRegistryClient creates a new NewNetworkServiceEndpointRegistryClient that can be used for NSE registration.
func NewNetworkServiceEndpointRegistryClient(ctx context.Context, cc grpc.ClientConnInterface, additionalFunctionality ...registry.NetworkServiceEndpointRegistryClient) registry.NetworkServiceEndpointRegistryClient {
return next.NewNetworkServiceEndpointRegistryClient(
chain.NewNetworkServiceEndpointRegistryClient(
refresh.NewNetworkServiceEndpointRegistryClient(refresh.WithChainContext(ctx)),
sendfd.NewNetworkServiceEndpointRegistryClient(),
),
chain.NewNetworkServiceEndpointRegistryClient(
additionalFunctionality...,
),
chain.NewNetworkServiceEndpointRegistryClient(
registry.NewNetworkServiceEndpointRegistryClient(cc),
),
)
}

// NewNetworkServiceRegistryClient creates a new registry.NetworkServiceRegistryClient that can be used for registry.NetworkService registration. Can be used as for nse also for cross-nse goals.
func NewNetworkServiceRegistryClient(cc grpc.ClientConnInterface, additionalFunctionality ...registry.NetworkServiceRegistryClient) registry.NetworkServiceRegistryClient {
return next.NewNetworkServiceRegistryClient(
chain.NewNetworkServiceRegistryClient(additionalFunctionality...),
chain.NewNetworkServiceRegistryClient(registry.NewNetworkServiceRegistryClient(cc)),
)
}

// NewNetworkServiceEndpointRegistryInterposeClient creates a new registry.NetworkServiceEndpointRegistryClient that can be used for cross-nse registration
func NewNetworkServiceEndpointRegistryInterposeClient(ctx context.Context, cc grpc.ClientConnInterface, additionalFunctionality ...registry.NetworkServiceEndpointRegistryClient) registry.NetworkServiceEndpointRegistryClient {
return next.NewNetworkServiceEndpointRegistryClient(
interpose.NewNetworkServiceEndpointRegistryClient(),
NewNetworkServiceEndpointRegistryClient(ctx, cc, additionalFunctionality...),
)
}

0 comments on commit 452f0d1

Please sign in to comment.