streaming

package
v0.9.0-rc3 Latest Latest
Warning

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

Go to latest
Published: Jan 17, 2024 License: Apache-2.0 Imports: 9 Imported by: 353

Documentation

Overview

Package streaming interface

Index

Constants

View Source
const KitexUnusedProtection = 0

KitexUnusedProtection may be anonymously referenced in another package to avoid build error

Variables

This section is empty.

Functions

func CallWithTimeout added in v0.9.0

func CallWithTimeout(timeout time.Duration, cancel context.CancelFunc, f func() (err error)) error

CallWithTimeout executes a function with timeout. If timeout is 0, the function will be executed without timeout; panic is not recovered in this case; If time runs out, it will return a kerrors.ErrRPCTimeout; If your function panics, it will also return a kerrors.ErrRPCTimeout with the panic details; Other kinds of errors are always returned by your function.

NOTE: the `cancel` function is necessary to cancel the underlying transport, otherwise the recv/send call will block until the transport is closed, which may cause surge of goroutines.

func NewCtxWithStream added in v0.9.0

func NewCtxWithStream(ctx context.Context, stream Stream) context.Context

func UnaryCompatibleMiddleware added in v0.9.0

func UnaryCompatibleMiddleware(mode serviceinfo.StreamingMode, allow bool) bool

UnaryCompatibleMiddleware returns whether to use compatible middleware for unary.

Types

type Args

type Args struct {
	Stream Stream
}

Args endpoint request

type Result

type Result struct {
	Stream Stream
}

Result endpoint response

type Stream

type Stream interface {
	// SetHeader sets the header metadata. It may be called multiple times.
	// When call multiple times, all the provided metadata will be merged.
	// All the metadata will be sent out when one of the following happens:
	//  - ServerStream.SendHeader() is called;
	//  - The first response is sent out;
	//  - An RPC status is sent out (error or success).
	SetHeader(metadata.MD) error
	// SendHeader sends the header metadata.
	// The provided md and headers set by SetHeader() will be sent.
	// It fails if called multiple times.
	SendHeader(metadata.MD) error
	// SetTrailer sets the trailer metadata which will be sent with the RPC status.
	// When called more than once, all the provided metadata will be merged.
	SetTrailer(metadata.MD)
	// Header is used for client side stream to receive header from server.
	Header() (metadata.MD, error)
	// Trailer is used for client side stream to receive trailer from server.
	Trailer() metadata.MD
	// Context the stream context.Context
	Context() context.Context
	// RecvMsg recvive message from peer
	// will block until an error or a message received
	// not concurrent-safety
	RecvMsg(m interface{}) error
	// SendMsg send message to peer
	// will block until an error or enough buffer to send
	// not concurrent-safety
	SendMsg(m interface{}) error
	// not concurrent-safety with SendMsg
	io.Closer
}

Stream both client and server stream

func GetStream added in v0.9.0

func GetStream(ctx context.Context) Stream

Jump to

Keyboard shortcuts

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