xframe/vendor/github.com/polarismesh/polaris-go/api/consumer.go

175 lines
5.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* Tencent is pleased to support the open source community by making polaris-go available.
*
* Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
*
* Licensed under the BSD 3-Clause License (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://opensource.org/licenses/BSD-3-Clause
*
* 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 api
import (
"github.com/polarismesh/polaris-go/pkg/model"
)
const (
// RetSuccess the call is successful
RetSuccess = model.RetSuccess
// RetFail call fails
RetFail = model.RetFail
)
const (
// EventInstance .
EventInstance = model.EventInstance
)
const (
// WatchModeLongPull watch model by long pulling, the invocation would be hang on until revision updated or timeout
WatchModeLongPull = model.WatchModeLongPull
// WatchModeNotify watch model by notify to listener
WatchModeNotify = model.WatchModeNotify
)
// GetOneInstanceRequest 获取单个服务的请求对象
type GetOneInstanceRequest struct {
model.GetOneInstanceRequest
}
func (r *GetOneInstanceRequest) convert() {
if len(r.Arguments) == 0 {
return
}
serviceInfo := r.SourceService
if serviceInfo == nil {
r.SourceService = &model.ServiceInfo{
Metadata: map[string]string{},
}
serviceInfo = r.SourceService
}
for i := range r.Arguments {
arg := r.Arguments[i]
arg.ToLabels(serviceInfo.Metadata)
}
}
// GetInstancesRequest 获取多个服务的请求对象
type GetInstancesRequest struct {
model.GetInstancesRequest
}
func (r *GetInstancesRequest) convert() {
if len(r.Arguments) == 0 {
return
}
serviceInfo := r.SourceService
if serviceInfo == nil {
r.SourceService = &model.ServiceInfo{
Metadata: map[string]string{},
}
serviceInfo = r.SourceService
}
for i := range r.Arguments {
arg := r.Arguments[i]
arg.ToLabels(serviceInfo.Metadata)
}
}
// GetAllInstancesRequest 获取服务下所有实例的请求对象
type GetAllInstancesRequest struct {
model.GetAllInstancesRequest
}
// ServiceCallResult 服务调用结果
type ServiceCallResult struct {
model.ServiceCallResult
}
// GetServiceRuleRequest 获取服务规则请求
type GetServiceRuleRequest struct {
model.GetServiceRuleRequest
}
// GetServicesRequest 获取批量服务请求
type GetServicesRequest struct {
model.GetServicesRequest
}
// WatchServiceRequest WatchService req
type WatchServiceRequest struct {
model.WatchServiceRequest
}
// InitCalleeServiceRequest .
type InitCalleeServiceRequest struct {
model.InitCalleeServiceRequest
}
// WatchAllInstancesRequest .
type WatchAllInstancesRequest struct {
model.WatchAllInstancesRequest
}
// WatchAllServicesRequest .
type WatchAllServicesRequest struct {
model.WatchAllServicesRequest
}
// ConsumerAPI 主调端API方法
type ConsumerAPI interface {
SDKOwner
// GetOneInstance 获取单个服务(会执行路由链与负载均衡,获取负载均衡后的服务实例)
GetOneInstance(req *GetOneInstanceRequest) (*model.OneInstanceResponse, error)
// GetInstances 获取可用的服务列表(会执行路由链,默认去掉隔离以及不健康的服务实例)
GetInstances(req *GetInstancesRequest) (*model.InstancesResponse, error)
// GetAllInstances 获取完整的服务列表(包括隔离及不健康的服务实例)
GetAllInstances(req *GetAllInstancesRequest) (*model.InstancesResponse, error)
// GetRouteRule 同步获取服务路由规则
GetRouteRule(req *GetServiceRuleRequest) (*model.ServiceRuleResponse, error)
// UpdateServiceCallResult 上报服务调用结果
UpdateServiceCallResult(req *ServiceCallResult) error
// Destroy 销毁API销毁后无法再进行调用
Destroy()
// Deprecated: please use WatchAllInstances instead
// WatchService 订阅服务消息
WatchService(req *WatchServiceRequest) (*model.WatchServiceResponse, error)
// GetServices 根据业务同步获取批量服务
GetServices(req *GetServicesRequest) (*model.ServicesResponse, error)
// InitCalleeService 初始化服务运行中需要的被调服务
InitCalleeService(req *InitCalleeServiceRequest) error
// WatchAllInstances 监听服务实例变更事件
WatchAllInstances(req *WatchAllInstancesRequest) (*model.WatchAllInstancesResponse, error)
// WatchAllServices 监听服务列表变更事件
WatchAllServices(req *WatchAllServicesRequest) (*model.WatchAllServicesResponse, error)
}
var (
// NewConsumerAPI 通过以默认域名为埋点server的默认配置创建ConsumerAPI
NewConsumerAPI = newConsumerAPI
// NewConsumerAPIByFile 通过配置文件创建SDK ConsumerAPI对象
NewConsumerAPIByFile = newConsumerAPIByFile
// NewConsumerAPIByConfig 通过配置对象创建SDK ConsumerAPI对象
NewConsumerAPIByConfig = newConsumerAPIByConfig
// NewConsumerAPIByContext 通过上下文创建SDK ConsumerAPI对象
NewConsumerAPIByContext = newConsumerAPIByContext
// NewConsumerAPIByDefaultConfigFile 从系统默认配置文件中创建ConsumerAPI
NewConsumerAPIByDefaultConfigFile = newConsumerAPIByDefaultConfigFile
// NewServiceCallResult 创建上报对象
NewServiceCallResult = newServiceCallResult
// NewConsumerAPIByAddress 通过address创建ConsumerAPI对象
NewConsumerAPIByAddress = newConsumerAPIByAddress
)