rpc

package
v0.0.0-...-0cb7091 Latest Latest
Warning

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

Go to latest
Published: Mar 6, 2021 License: BSD-3-Clause-Clear Imports: 24 Imported by: 0

Documentation

Index

Constants

View Source
const (
	ECode_Begin     codes.Code = iota + 20 // 起始错误码
	ECode_DBErr                            // 数据库错误
	ECode_NotFound                         // 记录找不到
	ECode_ParamsErr                        // 参数错误
	ECode_Convert                          // 结构转换错误
	ECode_Logic                            // 功能逻辑错误
	ECode_Cache                            // 功能缓存错误
)

错误码定义

View Source
const DEF_IP_LEASE_TTL = 3 * time.Second

Variables

This section is empty.

Functions

func ConvertError

func ConvertError(msg string, err ...error) error

grpc 结构转换错误

func DBError

func DBError(msg string, err ...error) error

grpc 数据库错误

func Error

func Error(code codes.Code, msg string, err ...error) error

grpc 错误状态码封装(base)

func FoundError

func FoundError(msg string, err ...error) error

grpc 查找错误

func InstallCliExt

func InstallCliExt(ctrlName string, mc IMCClient, conf *ConfClient)

安装扩展GClient控制器

func InstallSerExt

func InstallSerExt(ctrlName string, mc IMCServer, conf *ConfServer, opts ...SerOption)

安装扩展GServer控制器

func ParseTarget

func ParseTarget(target string) (scheme, endpoint string, ok bool)

检查符合 scheme://authority/endpoint 格式

func RDBError

func RDBError(msg string, err ...error) error

grpc 缓存库错误

func ServiceAddr

func ServiceAddr(addr string) *serviceAddr

serOptions->ServiceAddr

func TokenClaims

func TokenClaims(claimer ITokenClaimser) *tokenClaims

serOptions->TokenClaims

Types

type ConfClient

type ConfClient struct {
	Servers []ServerHost `json:"servers"`

	// 连接选项
	GrpcOpts struct {
		Cred  GrpcOptCred  `json:"cred"`  // 认证
		Keep  GrpcOptKep   `json:"keep"`  // 保活
		TLS   GrpcOptTLS   `json:"tls"`   // 安全
		Balan string       `json:"balan"` // 负载均衡(默认:round_robin)
		Retry GrpcOptRetry `json:"retry"` // 重试
	} `json:"grpcOpts"`
}

=> 客户端启动配置

type ConfServer

type ConfServer struct {
	Name       string `json:"name"`       // 服务名字(用于发现)
	RunMode    string `json:"runMode"`    // debug release
	ListenAddr string `json:"listenAddr"` // 监听地址 IP:Port

	// 服务选项
	GrpcOpts struct {
		Auth GrpcOptCred `json:"auth"` // 认证
		TLS  GrpcOptTLS  `json:"tls"`  // 安全
		Keep GrpcOptKep  `json:"keep"` // 保活
	} `json:"grpcOpts"`
}

=> 服务端启动配置

type EtcdResolver

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

 ======== 服务地址解析器

func (*EtcdResolver) Close

func (*EtcdResolver) Close()

func (*EtcdResolver) Key

func (this *EtcdResolver) Key() etc.Key

func (*EtcdResolver) ResolveNow

func (*EtcdResolver) ResolveNow(o resolver.ResolveNowOptions)

type GClient

type GClient struct {
	cto.ControlBase
	// contains filtered or unexported fields
}

 => grpc client control

func InstallCli

func InstallCli(ctrlName string, conf *ConfClient) *GClient

安装默认GClient控制器

func (*GClient) HandleInit

func (this *GClient) HandleInit()

func (*GClient) HandleTerm

func (this *GClient) HandleTerm()

func (*GClient) Register

func (this *GClient) Register(name TSerName, fun func(*grpc.ClientConn))

GClient.Register 注册回调在特定连接上申请客户端

type GServer

type GServer struct {
	cto.ControlBase
	// contains filtered or unexported fields
}

 => gser GServer control

func InstallSer

func InstallSer(ctrlName string, conf *ConfServer, opts ...SerOption) *GServer

安装默认GServer控制器

func (*GServer) HandleInit

func (this *GServer) HandleInit()

func (*GServer) HandleTerm

func (this *GServer) HandleTerm()

func (*GServer) Register

func (this *GServer) Register(fun func(*grpc.Server))

GServer.Register 注册回调特定服务

type GrpcOptCred

type GrpcOptCred struct {
	Enable       bool   `json:"enable"`
	AuthScheme   string `json:"authScheme"`   // 起个名(前后端要一致)
	TokenHeadKey string `json:"tokenHeadKey"` // 默认token, 此key从头中取得token
}

连接选项-认证

type GrpcOptKep

type GrpcOptKep struct {
	Enable        bool `json:"enable"`
	Time          int  `json:"interval"`      // 多久PING一次s 默认10s
	Timeout       int  `json:"timeout"`       // Ping时的超时s 默认2s
	WithoutStream bool `json:"withoutStream"` // 保活是否无关流式消息 默认false
}

连接选项-保活

type GrpcOptRetry

type GrpcOptRetry struct {
	Enable      bool `json:"enable"`
	MaxTimes    int  `json:"maxTimes"`    // 重试次数 默认2
	TimeoutSec  int  `json:"timeoutSec"`  // 重试超时s 默认2s
	IntervalSec int  `json:"intervalSec"` // 重试间隔s 默认2s,回退0.2
}

连接选项-重试

type GrpcOptTLS

type GrpcOptTLS struct {
	Enable  bool   `json:"enable"`
	SerName string `json:"serName"`
	CrtFile string `json:"crtFile"`
	KeyFile string `json:"keyFile"`
}

连接选项-TLS

type IMCClient

type IMCClient interface {
	cto.ICtrlHandler

	// 获取基类配置
	HandleCli() *GClient
}

 => GClient 对象接口

type IMCServer

type IMCServer interface {
	cto.ICtrlHandler

	// 获取基类配置
	HandleSer() *GServer
}

 => GServer 对象接口

type ITokenClaimser

type ITokenClaimser interface {
	Valid() bool
}

ITokenClaimser

type ResolverBuild

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

 ======== Resolver构建器

func (*ResolverBuild) Build

func (*ResolverBuild) Scheme

func (t *ResolverBuild) Scheme() string

type SerOption

type SerOption interface {
	// contains filtered or unexported methods
}

type ServerHost

type ServerHost struct {
	Name     string `json:"name"`     // 给此连接取一个名字
	Enable   bool   `json:"enable"`   // 控制是否启用
	Endpoint string `json:"endpoint"` // 当是'scheme://authority/endpoint'格式,并且其'authority'是以cloud作为前缀,则启用etcd作为服务发现
}

服务器地址

type TSerName

type TSerName = string // 服务名

Jump to

Keyboard shortcuts

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