genericserver

package
v0.15.4 Latest Latest
Warning

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

Go to latest
Published: Dec 26, 2025 License: Apache-2.0 Imports: 8 Imported by: 16

Documentation

Overview

Package genericserver ...

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewServer

func NewServer(handler generic.Service, g generic.Generic, opts ...server.Option) server.Server

NewServer creates a generic server with the given handler and options.

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:

  1. Match the service info which has the same service name as the requested service name.
  2. 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:

  1. Match the method info which has the same method name as the requested method name.
  2. 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.

Jump to

Keyboard shortcuts

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