gmiddleware

package module
v0.0.0-...-c92185a Latest Latest
Warning

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

Go to latest
Published: Sep 28, 2021 License: Apache-2.0 Imports: 12 Imported by: 0

README

gmiddleware

grpc 相关的中间件.该中间件具有拦截的功能.比如日志,执行链,错误码转换, h2c等

Documentation

Index

Constants

View Source
const (
	// DialTimeout 连接建立的超时时间
	DialTimeout = 5 * time.Second

	// BackoffMaxDelay 连接尝试失败后退出时提供的最大延迟
	BackoffMaxDelay = 3 * time.Second

	// KeepAliveTime 每隔KeepAliveTime时间,发送PING帧测量最小往返时间,确定空闲连接是否仍然有效,我们设置为10S
	KeepAliveTime = time.Duration(30) * time.Second

	// KeepAliveTimeout 超过KeepAliveTimeout,关闭连接,我们设置为3S
	KeepAliveTimeout = time.Duration(3) * time.Second

	// InitialWindowSize 基于Stream的滑动窗口,类似于TCP的滑动窗口,用来做流控,默认64KiB,吞吐量上不去,Client和Server我们调到1GiB.
	InitialWindowSize = 1 << 30

	// InitialConnWindowSize 基于Connection的滑动窗口,默认16 * 64KiB,吞吐量上不去,Client和Server我们也都调到1GiB
	InitialConnWindowSize = 1 << 30

	// MaxSendMsgSize GRPC最大允许发送的字节数,默认4MiB,如果超过了GRPC会报错
	MaxSendMsgSize = 4 << 30

	// MaxRecvMsgSize GRPC最大允许接收的字节数,默认4MiB,如果超过了GRPC会报错。Client和Server我们都调到4GiB
	MaxRecvMsgSize = 4 << 30
)

Variables

This section is empty.

Functions

func ChainStreamServer

func ChainStreamServer(interceptors ...grpc.StreamServerInterceptor) grpc.StreamServerInterceptor

ChainStreamServer 服务端的流式调用链

func ChainUnaryClient

func ChainUnaryClient(interceptors ...grpc.UnaryClientInterceptor) grpc.UnaryClientInterceptor

ChainUnaryClient 客户端的Unary调用链

func GRPCHandlerFunc

func GRPCHandlerFunc(grpcServer *grpc.Server, otherHandler http.Handler) http.Handler

GRPCHandlerFunc 用于区分http以及grpc

func GetGrpcService

func GetGrpcService() *grpc.Server

GetGrpcService 用于获取一个grpc 服务

func HeaderMatch

func HeaderMatch(key string) (string, bool)

HeaderMatch 客户端匹配

func ParseHeader

func ParseHeader(ctx Environment) error

ParseHeader 用于解析头部

Types

type ChanFn

type ChanFn func(ctx context.Context, req interface{}, info *ServiceInfo, handler FuncHandler) (rsp interface{}, err error)

ChanFn 用于描述一个执行链

func ChainUnaryServer

func ChainUnaryServer(interceptors ...ChanFn) ChanFn

ChainUnaryServer 服务端Unary调用链

type Environment

type Environment interface {
	GetMode() string
	SetMode(string)
	GetMac() string
	SetMac(string)
	GetIP() string
	SetIP(string)
	GetRID() string
	SetRID(string)
	GetAuth() string
	SetAuth(string)
	// GetToken() *pbtoken.Token
	// SetToken(*pbtoken.Token)
	Deadline() (deadline time.Time, ok bool)
	Done() <-chan struct{}
	Err() error
	Value(key interface{}) interface{}
}

Environment 这里仅仅是一个继承context的举例,一般这个context会被用于工程中,每个context都不相同

type FuncHandler

type FuncHandler func(ctx context.Context, req interface{}) (rsp interface{}, err error)

FuncHandler 用于描述一个执行句柄

type ServiceInfo

type ServiceInfo struct {
	Method  string // Method 用于描述当前的方法名
	Service string //  Service 用于描述一个服务名
	Version string // Version 版本
}

ServiceInfo 用于描述一个服务信息

type Structure

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

Structure 用于描述结构

func NewStruct

func NewStruct(ctx context.Context) *Structure

NewStruct 用于新建立一个结构

func (*Structure) Deadline

func (s *Structure) Deadline() (deadline time.Time, ok bool)

Deadline 实现context的接口

func (*Structure) Done

func (s *Structure) Done() <-chan struct{}

Done 实现context的接口

func (*Structure) Err

func (s *Structure) Err() error

Err 实现context接口

func (*Structure) GetAuth

func (s *Structure) GetAuth() string

GetAuth 获取认证标识

func (*Structure) GetIP

func (s *Structure) GetIP() string

GetIP 用于获取IP

func (*Structure) GetMac

func (s *Structure) GetMac() string

GetMac 用于获取mac地址

func (*Structure) GetMode

func (s *Structure) GetMode() string

GetMode 用于获取mode

func (*Structure) GetRID

func (s *Structure) GetRID() string

GetRID 获取请求ID

func (*Structure) SetAuth

func (s *Structure) SetAuth(m string)

SetAuth 设置认证

func (*Structure) SetIP

func (s *Structure) SetIP(m string)

SetIP 用于设置IP

func (*Structure) SetMac

func (s *Structure) SetMac(m string)

SetMac 设置mac地址

func (*Structure) SetMode

func (s *Structure) SetMode(m string)

SetMode 用于获取mode

func (*Structure) SetRID

func (s *Structure) SetRID(m string)

SetRID 设置请求ID

func (*Structure) Value

func (s *Structure) Value(key interface{}) interface{}

Value 实现context的接口

Jump to

Keyboard shortcuts

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