Documentation
¶
Overview ¶
Package genericserver ...
Index ¶
- func NewServer(handler generic.Service, g generic.Generic, opts ...server.Option) server.Server
- func NewServerV2(handler *generic.ServiceV2, g generic.Generic, opts ...server.Option) server.Server
- func NewServerWithServiceInfo(handler generic.Service, g generic.Generic, svcInfo *serviceinfo.ServiceInfo, ...) server.Server
- func NewUnknownServiceOrMethodServer(unknownHandler *UnknownServiceOrMethodHandler, options ...server.Option) server.Server
- func RegisterService(svr server.Server, handler *generic.ServiceV2, g generic.Generic, ...) error
- func RegisterUnknownServiceOrMethodHandler(svr server.Server, unknownHandler *UnknownServiceOrMethodHandler) error
- type UnknownServiceOrMethodHandler
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewServerV2 ¶ added in v0.15.0
func NewServerV2(handler *generic.ServiceV2, g generic.Generic, opts ...server.Option) server.Server
NewServerV2 creates a generic server with the given handler, generic and options. Note: NOT support generic.BinaryThriftGeneric, please use generic.BinaryThriftGenericV2 instead.
func NewServerWithServiceInfo ¶
func NewServerWithServiceInfo(handler generic.Service, g generic.Generic, svcInfo *serviceinfo.ServiceInfo, opts ...server.Option) server.Server
NewServerWithServiceInfo creates a generic server with the given handler, serviceInfo and options.
func NewUnknownServiceOrMethodServer ¶ added in v0.15.0
func NewUnknownServiceOrMethodServer(unknownHandler *UnknownServiceOrMethodHandler, options ...server.Option) server.Server
NewUnknownServiceOrMethodServer creates a server which registered UnknownServiceOrMethodHandler through RegisterUnknownServiceOrMethodHandler. For more details, see RegisterUnknownServiceOrMethodHandler.
func RegisterService ¶ added in v0.15.0
func RegisterService(svr server.Server, handler *generic.ServiceV2, g generic.Generic, opts ...server.RegisterOption) error
RegisterService registers a generic service with the given server. Note: NOT support generic.BinaryThriftGeneric, please use generic.BinaryThriftGenericV2 instead.
func RegisterUnknownServiceOrMethodHandler ¶ added in v0.15.0
func RegisterUnknownServiceOrMethodHandler(svr server.Server, unknownHandler *UnknownServiceOrMethodHandler) error
RegisterUnknownServiceOrMethodHandler registers a service handler for unknown service or method traffic.
After invoking this interface, the impact on server traffic processing is as follows:
- Unknown service scenario:
- Match the service info which has the same service name as the requested service name.
- If no match exists, a unique service info will be created using the requested service name and returned as the result of service searching.
- Unknown method scenario:
- Match the method info which has the same method name as the requested method name.
- If no match exists, - For default ping pong traffic (ttheader/framed e.g.): Requests are processed via the UnknownServiceOrMethodHandler.DefaultHandler. - For streaming traffic (including grpc unary): Requests are handled by the UnknownServiceOrMethodHandler.StreamingHandler.
This implementation relies on binary generic invocation. User-processed request/response objects through UnknownServiceOrMethodHandler are of type []byte, containing serialized data of the original request/response. And note that for Thrift Unary methods, the serialized data includes encapsulation of the Arg or Result structure.
Code example:
svr := server.NewServer(opts...)
err := genericserver.RegisterUnknownServiceOrMethodHandler(svr, &UnknownServiceOrMethodHandler{
DefaultHandler: defaultHandler,
StreamingHandler: streamingHandler,
})
Types ¶
type UnknownServiceOrMethodHandler ¶ added in v0.15.0
type UnknownServiceOrMethodHandler struct {
// Optional, handles default ping pong traffic (ttheader/framed e.g.), support both thrift binary and protobuf binary.
DefaultHandler func(ctx context.Context, service, method string, request interface{}) (response interface{}, err error)
// Optional, handles all streaming traffic (including grpc unary), support both thrift binary and protobuf binary.
StreamingHandler func(ctx context.Context, service, method string, stream generic.BidiStreamingServer) (err error)
}
UnknownServiceOrMethodHandler handles unknown service or method traffic.