Help us shape the future of Go! Take the 2026 Go Developer Survey

genericserver

package
v0.16.2 Latest Latest
Warning

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

Go to latest
Published: May 8, 2026 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