rpc

package
v2.0.1 Latest Latest
Warning

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

Go to latest
Published: Feb 15, 2022 License: Apache-2.0 Imports: 13 Imported by: 0

Documentation

Index

Constants

View Source
const (
	Balancer  = "balancer"
	Connector = "connector"
	Server    = "backend"
	Database  = "database"
)
View Source
const (
	DefaultQueue  = "dq"
	DefaultSuffix = ""
	JsonSuffix    = "json"
)
View Source
const (
	CodeTypeJson  = "json"
	CodeTypeProto = "proto"
)
View Source
const (
	Request  MessageType = 0x00
	Publish              = 0x01
	Response             = 0x02
)

Message types

Variables

View Source
var (
	ErrInvalidMessage = errors.New("invalid message")
)

Functions

func DefaultCallback

func DefaultCallback(req *MsgRpc) []byte

Types

type CallbackFunc

type CallbackFunc func(req *MsgRpc) []byte

type DefaultRpcEncoder

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

func NewRpcEncoder

func NewRpcEncoder(encoder serialize.Serializer) *DefaultRpcEncoder

func (*DefaultRpcEncoder) Decode

func (r *DefaultRpcEncoder) Decode(data []byte, rpcMsg *MsgRpc) error

func (*DefaultRpcEncoder) DecodeMsg

func (r *DefaultRpcEncoder) DecodeMsg(data []byte, v interface{}) error

func (*DefaultRpcEncoder) Encode

func (r *DefaultRpcEncoder) Encode(rpcMsg *MsgRpc) ([]byte, error)

Encode Protocol --------<length>--------|--type--|----<MsgId>------|-<data>- ----------3byte---------|-1 byte-|-----2 byte------|--------

func (*DefaultRpcEncoder) Response

func (r *DefaultRpcEncoder) Response(v interface{}) []byte

type EncoderRpc

type EncoderRpc interface {
	Encode(rpcMsg *MsgRpc) ([]byte, error)
	Decode(data []byte, rpcMsg *MsgRpc) error
	DecodeMsg(data []byte, v interface{}) error
	Response(v interface{}) []byte
}

type Handler

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

func NewHandler

func NewHandler() *Handler

func (*Handler) DealMsg

func (h *Handler) DealMsg(codeType string, server ServerRpc, req *MsgRpc) ([]byte, error)

func (*Handler) Register

func (h *Handler) Register(msgId int32, v interface{})

type HandlerItem

type HandlerItem struct {
	MsgType MessageType
	InType  reflect.Type
	Func    reflect.Value
}

type MessageType

type MessageType byte

type MsgRpc

type MsgRpc struct {
	MsgType MessageType
	MsgId   int32
	MsgData interface{}
}

type NatsRpc

type NatsRpc struct {
	Endpoints   []string
	Options     []nats.Option
	Client      *nats.Conn
	DialTimeout time.Duration
	RpcCoder    map[string]EncoderRpc
	Server      *treaty.Server
	DebugMsg    bool
	Prefix      string
	Finder      *discover.Finder
}

func NewRpcNats

func NewRpcNats(opts ...NatsRpcOption) *NatsRpc

func (*NatsRpc) DealMsg

func (r *NatsRpc) DealMsg(msg *nats.Msg, callback CallbackFunc, coder EncoderRpc)

func (*NatsRpc) DecodeMsg

func (r *NatsRpc) DecodeMsg(codeType string, data []byte, v interface{}) error

func (*NatsRpc) EncodeMsg

func (r *NatsRpc) EncodeMsg(coder EncoderRpc, msgType MessageType, msgId int32, req interface{}) ([]byte, error)

func (*NatsRpc) Find

func (r *NatsRpc) Find(serverType string, arg any) *treaty.Server

func (*NatsRpc) GetCoder

func (r *NatsRpc) GetCoder(codeType string) EncoderRpc

func (*NatsRpc) GetServer

func (r *NatsRpc) GetServer() *treaty.Server

func (*NatsRpc) Publish

func (r *NatsRpc) Publish(s ReqBuilder) error

func (*NatsRpc) PublishBroadcast

func (r *NatsRpc) PublishBroadcast(s ReqBuilder) error

func (*NatsRpc) QueueSubscribe

func (r *NatsRpc) QueueSubscribe(s RssBuilder) error

func (*NatsRpc) RegEncoder

func (r *NatsRpc) RegEncoder(typ string, encoder EncoderRpc)

func (*NatsRpc) RemoveFindCache

func (r *NatsRpc) RemoveFindCache(arg any)

func (*NatsRpc) Request

func (r *NatsRpc) Request(s ReqBuilder) error

func (*NatsRpc) Response

func (r *NatsRpc) Response(codeType string, v interface{}) []byte

func (*NatsRpc) Subscribe

func (r *NatsRpc) Subscribe(s RssBuilder) error

func (*NatsRpc) SubscribeBroadcast

func (r *NatsRpc) SubscribeBroadcast(s RssBuilder) error

type NatsRpcOption

type NatsRpcOption func(r *NatsRpc)

func WithNatsDebugMsg

func WithNatsDebugMsg(debug bool) NatsRpcOption

func WithNatsDialTimeout

func WithNatsDialTimeout(timeout time.Duration) NatsRpcOption

func WithNatsEndpoints

func WithNatsEndpoints(endpoints []string) NatsRpcOption

func WithNatsOptions

func WithNatsOptions(opts ...nats.Option) NatsRpcOption

func WithNatsPrefix

func WithNatsPrefix(prefix string) NatsRpcOption

func WithNatsServer

func WithNatsServer(server *treaty.Server) NatsRpcOption

type ReqBuilder

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

func NewReqBuilder

func NewReqBuilder(server *treaty.Server) *ReqBuilder

func (*ReqBuilder) Build

func (r *ReqBuilder) Build() ReqBuilder

func (*ReqBuilder) SetCodeType

func (r *ReqBuilder) SetCodeType(codeType string) *ReqBuilder

func (*ReqBuilder) SetMsgId

func (r *ReqBuilder) SetMsgId(msgId int32) *ReqBuilder

func (*ReqBuilder) SetReq

func (r *ReqBuilder) SetReq(req interface{}) *ReqBuilder

func (*ReqBuilder) SetResp

func (r *ReqBuilder) SetResp(resp interface{}) *ReqBuilder

func (*ReqBuilder) SetServer

func (r *ReqBuilder) SetServer(server *treaty.Server) *ReqBuilder

func (*ReqBuilder) SetServerType

func (r *ReqBuilder) SetServerType(serverType string) *ReqBuilder

func (*ReqBuilder) SetSuffix

func (r *ReqBuilder) SetSuffix(suffix string) *ReqBuilder

type RssBuilder

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

func NewRssBuilder

func NewRssBuilder(server *treaty.Server) *RssBuilder

func (*RssBuilder) Build

func (r *RssBuilder) Build() RssBuilder

func (*RssBuilder) SetCallback

func (r *RssBuilder) SetCallback(callback CallbackFunc) *RssBuilder

func (*RssBuilder) SetCodeType

func (r *RssBuilder) SetCodeType(codeType string) *RssBuilder

func (*RssBuilder) SetParallel

func (r *RssBuilder) SetParallel(parallel bool) *RssBuilder

func (*RssBuilder) SetQueue

func (r *RssBuilder) SetQueue(queue string) *RssBuilder

func (*RssBuilder) SetServer

func (r *RssBuilder) SetServer(server *treaty.Server) *RssBuilder

func (*RssBuilder) SetSuffix

func (r *RssBuilder) SetSuffix(suffix string) *RssBuilder

type ServerCreator

type ServerCreator func(s *treaty.Server) (ServerEntity, error)

type ServerEntity

type ServerEntity interface {
	Init()                                   //初始化
	AfterInit()                              //初始化后执行操作
	BeforeShutdown()                         //服务关闭前操作
	Shutdown()                               //服务关闭操作
	HandleSelfEvent(req *MsgRpc) []byte      //处理自己的事件
	HandleBroadcastEvent(req *MsgRpc) []byte //处理广播事件
}

ServerEntity server entity

type ServerRpc

type ServerRpc interface {
	RegEncoder(typ string, encoder EncoderRpc)                   //register encoder
	Subscribe(s RssBuilder) error                                //self Subscribe
	SubscribeBroadcast(s RssBuilder) error                       //broadcast subscribe
	QueueSubscribe(s RssBuilder) error                           //queue self Subscribe
	Publish(s ReqBuilder) error                                  //publish
	PublishBroadcast(s ReqBuilder) error                         //broadcast publish
	Request(s ReqBuilder) error                                  //request
	Response(codeType string, v interface{}) []byte              //response the msg
	DecodeMsg(codeType string, data []byte, v interface{}) error //decode msg
	GetCoder(codeType string) EncoderRpc                         //get encoder
	GetServer() *treaty.Server                                   //get current server
	Find(serverType string, arg any) *treaty.Server              //find server
	RemoveFindCache(arg any)                                     //clear find cache
}

ServerRpc rpc interface

func NewRpcServer

func NewRpcServer(cfg config.RpcConf, server *treaty.Server) ServerRpc

NewRpcServer create rpc server

Jump to

Keyboard shortcuts

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