framing

package
v0.4.0 Latest Latest
Warning

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

Go to latest
Published: Sep 28, 2019 License: Apache-2.0 Imports: 8 Imported by: 0

Documentation

Index

Constants

View Source
const (
	FlagNext FrameFlag = 1 << (5 + iota)
	FlagComplete
	FlagFollow
	FlagMetadata
	FlagIgnore

	FlagResume  = FlagFollow
	FlagLease   = FlagComplete
	FlagRespond = FlagFollow
)

All frame flags

View Source
const (
	// HeaderLen is len of header.
	HeaderLen = 6
)

Variables

This section is empty.

Functions

func CalcPayloadFrameSize

func CalcPayloadFrameSize(data, metadata []byte) int

CalcPayloadFrameSize returns payload frame size.

Types

type BaseFrame

type BaseFrame struct {
	// contains filtered or unexported fields
}

BaseFrame is basic frame implementation.

func NewBaseFrame

func NewBaseFrame(h FrameHeader, body *common.ByteBuff) (f *BaseFrame)

NewBaseFrame returns a new BaseFrame.

func (*BaseFrame) Body

func (p *BaseFrame) Body() *common.ByteBuff

Body returns frame body.

func (*BaseFrame) Bytes

func (p *BaseFrame) Bytes() []byte

Bytes returns frame in bytes.

func (*BaseFrame) Done added in v0.3.1

func (p *BaseFrame) Done()

func (*BaseFrame) DoneNotify added in v0.3.1

func (p *BaseFrame) DoneNotify() <-chan struct{}

func (*BaseFrame) Header

func (p *BaseFrame) Header() FrameHeader

Header returns frame header.

func (*BaseFrame) IsResumable

func (p *BaseFrame) IsResumable() bool

IsResumable returns true if frame supports resume.

func (*BaseFrame) Len

func (p *BaseFrame) Len() int

Len returns length of frame.

func (*BaseFrame) SetBody

func (p *BaseFrame) SetBody(body *common.ByteBuff)

SetBody set frame body.

func (*BaseFrame) SetHeader

func (p *BaseFrame) SetHeader(h FrameHeader)

SetHeader set frame header.

func (*BaseFrame) WriteTo

func (p *BaseFrame) WriteTo(w io.Writer) (n int64, err error)

WriteTo write frame to writer.

type Frame

type Frame interface {
	fmt.Stringer
	io.WriterTo
	// Header returns frame FrameHeader.
	Header() FrameHeader
	// Body returns body of frame.
	Body() *common.ByteBuff
	// Len returns length of frame.
	Len() int
	// Validate returns error if frame is invalid.
	Validate() error
	// SetHeader set frame header.
	SetHeader(h FrameHeader)
	// SetBody set frame body.
	SetBody(body *common.ByteBuff)
	// Bytes encodes and returns frame in bytes.
	Bytes() []byte
	// IsResumable returns true if frame supports resume.
	IsResumable() bool
	// Done marks current frame has been sent.
	Done()
	// DoneNotify notifies when frame done.
	DoneNotify() <-chan struct{}
}

Frame is a single message containing a request, response, or protocol processing.

func NewFromBase

func NewFromBase(f *BaseFrame) (frame Frame, err error)

NewFromBase creates a frame from a BaseFrame.

type FrameCancel

type FrameCancel struct {
	*BaseFrame
}

FrameCancel is frame of cancel.

func NewFrameCancel

func NewFrameCancel(sid uint32) *FrameCancel

NewFrameCancel returns a new cancel frame.

func (*FrameCancel) String

func (p *FrameCancel) String() string

func (*FrameCancel) Validate

func (p *FrameCancel) Validate() (err error)

Validate returns error if frame is invalid.

type FrameError

type FrameError struct {
	*BaseFrame
}

FrameError is error frame.

func NewFrameError

func NewFrameError(streamID uint32, code common.ErrorCode, data []byte) *FrameError

NewFrameError returns a new error frame.

func (*FrameError) Error

func (p *FrameError) Error() string

func (*FrameError) ErrorCode

func (p *FrameError) ErrorCode() common.ErrorCode

ErrorCode returns error code.

func (*FrameError) ErrorData

func (p *FrameError) ErrorData() []byte

ErrorData returns error data bytes.

func (*FrameError) String added in v0.3.1

func (p *FrameError) String() string

func (*FrameError) Validate

func (p *FrameError) Validate() (err error)

Validate returns error if frame is invalid.

type FrameFNF

type FrameFNF struct {
	*BaseFrame
}

FrameFNF is fire and forget frame.

func NewFrameFNF

func NewFrameFNF(sid uint32, data, metadata []byte, flags ...FrameFlag) *FrameFNF

NewFrameFNF returns a new fire and forget frame.

func (*FrameFNF) Data

func (p *FrameFNF) Data() []byte

Data returns data bytes.

func (*FrameFNF) DataUTF8

func (p *FrameFNF) DataUTF8() string

DataUTF8 returns data as UTF8 string.

func (*FrameFNF) Metadata

func (p *FrameFNF) Metadata() ([]byte, bool)

Metadata returns metadata bytes.

func (*FrameFNF) MetadataUTF8

func (p *FrameFNF) MetadataUTF8() (metadata string, ok bool)

MetadataUTF8 returns metadata as UTF8 string.

func (*FrameFNF) String

func (p *FrameFNF) String() string

func (*FrameFNF) Validate

func (p *FrameFNF) Validate() (err error)

Validate returns error if frame is invalid.

type FrameFlag

type FrameFlag uint16

FrameFlag is flag of frame.

func (FrameFlag) Check

func (f FrameFlag) Check(mask FrameFlag) bool

Check returns true if mask exists.

func (FrameFlag) String

func (f FrameFlag) String() string

type FrameHeader

type FrameHeader [HeaderLen]byte

FrameHeader is the header fo a RSocke frame. RSocket frames begin with a RSocket Frame Header. It includes StreamID, FrameType and Flags.

func NewFrameHeader

func NewFrameHeader(streamID uint32, frameType FrameType, flags ...FrameFlag) FrameHeader

NewFrameHeader returns a new frame header.

func ParseFrameHeader

func ParseFrameHeader(bs []byte) FrameHeader

ParseFrameHeader parse a header from bytes.

func (FrameHeader) Flag

func (p FrameHeader) Flag() FrameFlag

Flag returns flag of a frame.

func (FrameHeader) StreamID

func (p FrameHeader) StreamID() uint32

StreamID returns StreamID.

func (FrameHeader) String

func (p FrameHeader) String() string

func (FrameHeader) Type

func (p FrameHeader) Type() FrameType

Type returns frame type.

func (FrameHeader) WriteTo

func (p FrameHeader) WriteTo(w io.Writer) (int64, error)

WriteTo writes frame header to a writer.

type FrameKeepalive

type FrameKeepalive struct {
	*BaseFrame
}

FrameKeepalive is keepalive frame.

func NewFrameKeepalive

func NewFrameKeepalive(position uint64, data []byte, respond bool) *FrameKeepalive

NewFrameKeepalive returns a new keepalive frame.

func (*FrameKeepalive) Data

func (p *FrameKeepalive) Data() []byte

Data returns data bytes.

func (*FrameKeepalive) LastReceivedPosition

func (p *FrameKeepalive) LastReceivedPosition() uint64

LastReceivedPosition returns last received position.

func (*FrameKeepalive) String

func (p *FrameKeepalive) String() string

func (*FrameKeepalive) Validate

func (p *FrameKeepalive) Validate() (err error)

Validate returns error if frame is invalid.

type FrameLease

type FrameLease struct {
	*BaseFrame
}

FrameLease is lease frame.

func (*FrameLease) Metadata

func (p *FrameLease) Metadata() []byte

Metadata returns metadata bytes.

func (*FrameLease) NumberOfRequests

func (p *FrameLease) NumberOfRequests() uint32

NumberOfRequests returns number of requests.

func (*FrameLease) String

func (p *FrameLease) String() string

func (*FrameLease) TimeToLive

func (p *FrameLease) TimeToLive() time.Duration

TimeToLive returns time to live duration.

func (*FrameLease) Validate

func (p *FrameLease) Validate() (err error)

Validate returns error if frame is invalid.

type FrameMetadataPush

type FrameMetadataPush struct {
	*BaseFrame
}

FrameMetadataPush is metadata push frame.

func NewFrameMetadataPush

func NewFrameMetadataPush(metadata []byte) *FrameMetadataPush

NewFrameMetadataPush returns a new metadata push frame.

func (*FrameMetadataPush) Data

func (p *FrameMetadataPush) Data() []byte

Data returns data bytes.

func (*FrameMetadataPush) DataUTF8

func (p *FrameMetadataPush) DataUTF8() (data string)

DataUTF8 returns data as UTF8 string.

func (*FrameMetadataPush) Metadata

func (p *FrameMetadataPush) Metadata() ([]byte, bool)

Metadata returns metadata bytes.

func (*FrameMetadataPush) MetadataUTF8

func (p *FrameMetadataPush) MetadataUTF8() (metadata string, ok bool)

MetadataUTF8 returns metadata as UTF8 string.

func (*FrameMetadataPush) String

func (p *FrameMetadataPush) String() string

func (*FrameMetadataPush) Validate

func (p *FrameMetadataPush) Validate() (err error)

Validate returns error if frame is invalid.

type FramePayload

type FramePayload struct {
	*BaseFrame
}

FramePayload is payload frame.

func NewFramePayload

func NewFramePayload(id uint32, data, metadata []byte, flags ...FrameFlag) *FramePayload

NewFramePayload returns a new payload frame.

func (*FramePayload) Data

func (p *FramePayload) Data() []byte

Data returns data bytes.

func (*FramePayload) DataUTF8

func (p *FramePayload) DataUTF8() string

DataUTF8 returns data as UTF8 string.

func (*FramePayload) Metadata

func (p *FramePayload) Metadata() ([]byte, bool)

Metadata returns metadata bytes.

func (*FramePayload) MetadataUTF8

func (p *FramePayload) MetadataUTF8() (metadata string, ok bool)

MetadataUTF8 returns metadata as UTF8 string.

func (*FramePayload) String

func (p *FramePayload) String() string

func (*FramePayload) Validate

func (p *FramePayload) Validate() (err error)

Validate returns error if frame is invalid.

type FrameRequestChannel

type FrameRequestChannel struct {
	*BaseFrame
}

FrameRequestChannel is frame for RequestChannel.

func NewFrameRequestChannel

func NewFrameRequestChannel(sid uint32, n uint32, data, metadata []byte, flags ...FrameFlag) *FrameRequestChannel

NewFrameRequestChannel returns a new RequestChannel frame.

func (*FrameRequestChannel) Data

func (p *FrameRequestChannel) Data() []byte

Data returns data bytes.

func (*FrameRequestChannel) DataUTF8

func (p *FrameRequestChannel) DataUTF8() string

DataUTF8 returns data as UTF8 string.

func (*FrameRequestChannel) InitialRequestN

func (p *FrameRequestChannel) InitialRequestN() uint32

InitialRequestN returns initial N.

func (*FrameRequestChannel) Metadata

func (p *FrameRequestChannel) Metadata() ([]byte, bool)

Metadata returns metadata bytes.

func (*FrameRequestChannel) MetadataUTF8

func (p *FrameRequestChannel) MetadataUTF8() (metadata string, ok bool)

MetadataUTF8 returns metadata as UTF8 string.

func (*FrameRequestChannel) String

func (p *FrameRequestChannel) String() string

func (*FrameRequestChannel) Validate

func (p *FrameRequestChannel) Validate() (err error)

Validate returns error if frame is invalid.

type FrameRequestN

type FrameRequestN struct {
	*BaseFrame
}

FrameRequestN is RequestN frame.

func NewFrameRequestN

func NewFrameRequestN(sid, n uint32, flags ...FrameFlag) *FrameRequestN

NewFrameRequestN returns a new RequestN frame.

func (*FrameRequestN) N

func (p *FrameRequestN) N() uint32

N returns N in RequestN.

func (*FrameRequestN) String

func (p *FrameRequestN) String() string

func (*FrameRequestN) Validate

func (p *FrameRequestN) Validate() (err error)

Validate returns error if frame is invalid.

type FrameRequestResponse

type FrameRequestResponse struct {
	*BaseFrame
}

FrameRequestResponse is frame for requesting single response.

func NewFrameRequestResponse

func NewFrameRequestResponse(id uint32, data, metadata []byte, flags ...FrameFlag) *FrameRequestResponse

NewFrameRequestResponse returns a new RequestResponse frame.

func (*FrameRequestResponse) Data

func (p *FrameRequestResponse) Data() []byte

Data returns data bytes.

func (*FrameRequestResponse) DataUTF8

func (p *FrameRequestResponse) DataUTF8() string

DataUTF8 returns data as UTF8 string.

func (*FrameRequestResponse) Metadata

func (p *FrameRequestResponse) Metadata() ([]byte, bool)

Metadata returns metadata bytes.

func (*FrameRequestResponse) MetadataUTF8

func (p *FrameRequestResponse) MetadataUTF8() (metadata string, ok bool)

MetadataUTF8 returns metadata as UTF8 string.

func (*FrameRequestResponse) String

func (p *FrameRequestResponse) String() string

func (*FrameRequestResponse) Validate

func (p *FrameRequestResponse) Validate() (err error)

Validate returns error if frame is invalid.

type FrameRequestStream

type FrameRequestStream struct {
	*BaseFrame
}

FrameRequestStream is frame for requesting a completable stream.

func NewFrameRequestStream

func NewFrameRequestStream(id uint32, n uint32, data, metadata []byte, flags ...FrameFlag) *FrameRequestStream

NewFrameRequestStream returns a new request stream frame.

func (*FrameRequestStream) Data

func (p *FrameRequestStream) Data() []byte

Data returns data bytes.

func (*FrameRequestStream) DataUTF8

func (p *FrameRequestStream) DataUTF8() string

DataUTF8 returns data as UTF8 string.

func (*FrameRequestStream) InitialRequestN

func (p *FrameRequestStream) InitialRequestN() uint32

InitialRequestN returns initial request N.

func (*FrameRequestStream) Metadata

func (p *FrameRequestStream) Metadata() ([]byte, bool)

Metadata returns metadata bytes.

func (*FrameRequestStream) MetadataUTF8

func (p *FrameRequestStream) MetadataUTF8() (metadata string, ok bool)

MetadataUTF8 returns metadata as UTF8 string.

func (*FrameRequestStream) String

func (p *FrameRequestStream) String() string

func (*FrameRequestStream) Validate

func (p *FrameRequestStream) Validate() (err error)

Validate returns error if frame is invalid.

type FrameResume

type FrameResume struct {
	*BaseFrame
}

FrameResume represents a frame of Resume.

func NewFrameResume

func NewFrameResume(version common.Version, token []byte, firstAvailableClientPosition, lastReceivedServerPosition uint64) *FrameResume

NewFrameResume creates a new frame of Resume.

func (*FrameResume) FirstAvailableClientPosition

func (p *FrameResume) FirstAvailableClientPosition() uint64

FirstAvailableClientPosition returns first available client position.

func (*FrameResume) LastReceivedServerPosition

func (p *FrameResume) LastReceivedServerPosition() uint64

LastReceivedServerPosition returns last received server position.

func (*FrameResume) String

func (p *FrameResume) String() string

func (*FrameResume) Token

func (p *FrameResume) Token() []byte

Token returns resume token in bytes.

func (*FrameResume) Validate

func (p *FrameResume) Validate() (err error)

Validate validate current frame.

func (*FrameResume) Version

func (p *FrameResume) Version() common.Version

Version returns version.

type FrameResumeOK

type FrameResumeOK struct {
	*BaseFrame
}

FrameResumeOK represents a frame of ResumeOK.

func NewResumeOK

func NewResumeOK(position uint64) *FrameResumeOK

NewResumeOK creates a new frame of ResumeOK.

func (*FrameResumeOK) LastReceivedClientPosition

func (p *FrameResumeOK) LastReceivedClientPosition() uint64

LastReceivedClientPosition returns last received client position.

func (*FrameResumeOK) String

func (p *FrameResumeOK) String() string

func (*FrameResumeOK) Validate

func (p *FrameResumeOK) Validate() (err error)

Validate validate current frame.

type FrameSetup

type FrameSetup struct {
	*BaseFrame
}

FrameSetup is sent by client to initiate protocol processing.

func NewFrameSetup

func NewFrameSetup(
	version common.Version,
	timeBetweenKeepalive,
	maxLifetime time.Duration,
	token []byte,
	mimeMetadata []byte,
	mimeData []byte,
	data []byte,
	metadata []byte,
) *FrameSetup

NewFrameSetup returns a new setup frame.

func (*FrameSetup) Data

func (p *FrameSetup) Data() []byte

Data returns data bytes.

func (*FrameSetup) DataMimeType

func (p *FrameSetup) DataMimeType() (mime string)

DataMimeType returns MIME of data.

func (*FrameSetup) DataUTF8

func (p *FrameSetup) DataUTF8() string

DataUTF8 returns data as UTF8 string.

func (*FrameSetup) MaxLifetime

func (p *FrameSetup) MaxLifetime() time.Duration

MaxLifetime returns keepalive max lifetime.

func (*FrameSetup) Metadata

func (p *FrameSetup) Metadata() ([]byte, bool)

Metadata returns metadata bytes.

func (*FrameSetup) MetadataMimeType

func (p *FrameSetup) MetadataMimeType() string

MetadataMimeType returns MIME of metadata.

func (*FrameSetup) MetadataUTF8

func (p *FrameSetup) MetadataUTF8() (metadata string, ok bool)

MetadataUTF8 returns metadata as UTF8 string

func (*FrameSetup) String

func (p *FrameSetup) String() string

func (*FrameSetup) TimeBetweenKeepalive

func (p *FrameSetup) TimeBetweenKeepalive() time.Duration

TimeBetweenKeepalive returns keepalive interval duration.

func (*FrameSetup) Token

func (p *FrameSetup) Token() []byte

Token returns token of setup.

func (*FrameSetup) Validate

func (p *FrameSetup) Validate() (err error)

Validate returns error if frame is invalid.

func (*FrameSetup) Version

func (p *FrameSetup) Version() common.Version

Version returns version.

type FrameType

type FrameType uint8

FrameType is type of frame.

const (
	FrameTypeReserved        FrameType = 0x00
	FrameTypeSetup           FrameType = 0x01
	FrameTypeLease           FrameType = 0x02
	FrameTypeKeepalive       FrameType = 0x03
	FrameTypeRequestResponse FrameType = 0x04
	FrameTypeRequestFNF      FrameType = 0x05
	FrameTypeRequestStream   FrameType = 0x06
	FrameTypeRequestChannel  FrameType = 0x07
	FrameTypeRequestN        FrameType = 0x08
	FrameTypeCancel          FrameType = 0x09
	FrameTypePayload         FrameType = 0x0A
	FrameTypeError           FrameType = 0x0B
	FrameTypeMetadataPush    FrameType = 0x0C
	FrameTypeResume          FrameType = 0x0D
	FrameTypeResumeOK        FrameType = 0x0E
	FrameTypeExt             FrameType = 0x3F
)

All frame types

func (FrameType) String

func (f FrameType) String() string

Jump to

Keyboard shortcuts

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