stream

package
v1.30.0 Latest Latest
Warning

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

Go to latest
Published: Apr 6, 2023 License: MIT Imports: 3 Imported by: 115

Documentation

Overview

Package stream provides streaming implementations of encoding and decoding Thrift values.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BodyReader

type BodyReader interface {
	Decode(Reader) error
}

BodyReader represents a type that can be read out from a stream.Reader.

type EnvelopeHeader

type EnvelopeHeader struct {
	Name  string
	Type  wire.EnvelopeType
	SeqID int32
}

EnvelopeHeader represents the envelope of a response or a request which includes metadata about the method, the type of data in the envelope, and the value. It is equivalent of `wire.Envelope`, but for streaming purposes.

type Enveloper

type Enveloper interface {
	MethodName() string
	EnvelopeType() wire.EnvelopeType
	Encode(Writer) error
}

Enveloper is the interface implemented by a type that can be written with an envelope via a stream.Writer.

type FieldHeader

type FieldHeader struct {
	ID   int16
	Type wire.Type
}

FieldHeader defines the metadata needed to define the beginning of a field in a Thrift value.

type ListHeader

type ListHeader struct {
	Length int
	Type   wire.Type
}

ListHeader defines the metadata needed to define the beginning of a list in a Thrift value.

type MapHeader

type MapHeader struct {
	KeyType   wire.Type
	ValueType wire.Type
	Length    int
}

MapHeader defines the metadata needed to define the beginning of a map in a Thrift value.

type Protocol

type Protocol interface {
	// Writer returns a streaming implementation of an encoder for a
	// Thrift value.
	Writer(w io.Writer) Writer

	// Reader returns a streaming implementation of a decoder for a
	// Thrift value.
	Reader(r io.Reader) Reader
}

Protocol defines a specific way for a Thrift value to be encoded or decoded, implemented in a streaming fashion.

type Reader

type Reader interface {
	ReadBool() (bool, error)
	ReadInt8() (int8, error)
	ReadInt16() (int16, error)
	ReadInt32() (int32, error)
	ReadInt64() (int64, error)
	ReadString() (string, error)
	ReadDouble() (float64, error)
	ReadBinary() ([]byte, error)
	ReadStructBegin() error
	ReadStructEnd() error
	ReadFieldBegin() (FieldHeader, bool, error)
	ReadFieldEnd() error
	ReadListBegin() (ListHeader, error)
	ReadListEnd() error
	ReadSetBegin() (SetHeader, error)
	ReadSetEnd() error
	ReadMapBegin() (MapHeader, error)
	ReadMapEnd() error
	Close() error

	ReadEnvelopeBegin() (EnvelopeHeader, error)
	ReadEnvelopeEnd() error

	// Skip skips over the bytes of the wire type and any applicable headers.
	Skip(w wire.Type) error
}

Reader defines an decoder for a Thrift value, implemented in a streaming fashion.

type RequestReader

type RequestReader interface {
	// ReadRequest reads off the request envelope (if present) from an io.Reader,
	// using the provided BodyReader to read off the full request struct,
	// asserting the EnvelopeType (either OneWay or Unary) if an envlope exists.
	// A ResponseWriter that understands the enveloping used and the request's
	// body are returned.
	//
	// This allows a Thrift request handler to transparently read requests
	// regardless of whether the caller is configured to submit envelopes.
	ReadRequest(context.Context, wire.EnvelopeType, io.Reader, BodyReader) (ResponseWriter, error)
}

RequestReader captures how to read from a request in a streaming fashion.

type ResponseWriter

type ResponseWriter interface {
	// WriteResponse writes a response to the Writer with the envelope
	// style of the corresponding request, and returns a stream.Writer to write
	// remaining un-enveloped response bytes. Once writing of the response is complete,
	// whether successful or not (error), users must call Close() on the stream.Writer.
	//
	// The EnvelopeType should be either wire.Reply or wire.Exception.
	WriteResponse(wire.EnvelopeType, io.Writer, Enveloper) error
}

ResponseWriter captures how to respond to a request in a streaming fashion.

type SetHeader

type SetHeader struct {
	Length int
	Type   wire.Type
}

SetHeader defines the metadata needed to define the beginning of a set in a Thrift value.

type Writer

type Writer interface {
	WriteBool(b bool) error
	WriteInt8(i int8) error
	WriteInt16(i int16) error
	WriteInt32(i int32) error
	WriteInt64(i int64) error
	WriteString(s string) error
	WriteDouble(f float64) error
	WriteBinary(b []byte) error
	WriteStructBegin() error
	WriteStructEnd() error
	WriteFieldBegin(f FieldHeader) error
	WriteFieldEnd() error
	WriteMapBegin(m MapHeader) error
	WriteMapEnd() error
	WriteSetBegin(s SetHeader) error
	WriteSetEnd() error
	WriteListBegin(l ListHeader) error
	WriteListEnd() error

	WriteEnvelopeBegin(eh EnvelopeHeader) error
	WriteEnvelopeEnd() error

	Close() error
}

Writer defines an encoder for a Thrift value, implemented in a streaming fashion.

Jump to

Keyboard shortcuts

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