frame

package
v1.12.2 Latest Latest
Warning

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

Go to latest
Published: Apr 21, 2023 License: Apache-2.0 Imports: 7 Imported by: 3

Documentation

Overview

Package frame provides the definition of frame.

Package frame defines frames for yomo.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DecodeToMetaFrame

func DecodeToMetaFrame(buf []byte, meta *MetaFrame) error

DecodeToMetaFrame decode a MetaFrame instance from given buffer.

func DecodeToPayloadFrame

func DecodeToPayloadFrame(buf []byte, payload *PayloadFrame) error

DecodeToPayloadFrame decodes Y3 encoded bytes to PayloadFrame

Types

type AcceptedFrame

type AcceptedFrame struct{}

AcceptedFrame is a Y3 encoded bytes, Tag is a fixed value TYPE_ID_ACCEPTED_FRAME

func DecodeToAcceptedFrame

func DecodeToAcceptedFrame(buf []byte) (*AcceptedFrame, error)

DecodeToAcceptedFrame decodes Y3 encoded bytes to AcceptedFrame.

func NewAcceptedFrame

func NewAcceptedFrame() *AcceptedFrame

NewAcceptedFrame creates a new AcceptedFrame with a given TagID of user's data

func (*AcceptedFrame) Encode

func (m *AcceptedFrame) Encode() []byte

Encode to Y3 encoded bytes.

func (*AcceptedFrame) Type

func (m *AcceptedFrame) Type() Type

Type gets the type of Frame.

type AuthenticationFrame added in v1.11.0

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

AuthenticationFrame is used to authenticate the client, Once the connection is established, the client immediately, sends information to the server, server gets the way to authenticate according to authName and use authPayload to do a authentication.

AuthenticationFrame is a Y3 encoded.

func DecodeToAuthenticationFrame added in v1.11.0

func DecodeToAuthenticationFrame(buf []byte) (*AuthenticationFrame, error)

DecodeToAuthenticationFrame decodes Y3 encoded bytes to AuthenticationFrame.

func NewAuthenticationFrame added in v1.11.0

func NewAuthenticationFrame(authName string, authPayload string) *AuthenticationFrame

NewAuthenticationFrame creates a new AuthenticationFrame.

func (*AuthenticationFrame) AuthName added in v1.11.0

func (h *AuthenticationFrame) AuthName() string

AuthName returns authentication name, server finds the mode of authentication in AuthName.

func (*AuthenticationFrame) AuthPayload added in v1.11.0

func (h *AuthenticationFrame) AuthPayload() string

AuthPayload returns authentication payload.

func (*AuthenticationFrame) Encode added in v1.11.0

func (h *AuthenticationFrame) Encode() []byte

Encode encodes AuthenticationFrame to bytes in Y3 codec.

func (*AuthenticationFrame) Type added in v1.11.0

func (h *AuthenticationFrame) Type() Type

Type returns the type of AuthenticationFrame.

type AuthenticationRespFrame added in v1.11.0

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

AuthenticationRespFrame is the response of Authentication. AuthenticationRespFrame is a Y3 encoded bytes.

func DecodeToAuthenticationRespFrame added in v1.11.0

func DecodeToAuthenticationRespFrame(buf []byte) (*AuthenticationRespFrame, error)

DecodeToAuthenticationRespFrame decodes Y3 encoded bytes to AuthenticationRespFrame.

func NewAuthenticationRespFrame added in v1.11.0

func NewAuthenticationRespFrame(ok bool, reason string) *AuthenticationRespFrame

NewAuthenticationRespFrame returns a AuthenticationRespFrame.

func (*AuthenticationRespFrame) Encode added in v1.11.0

func (f *AuthenticationRespFrame) Encode() []byte

Encode encodes AuthenticationRespFrame to Y3 encoded bytes.

func (*AuthenticationRespFrame) OK added in v1.11.0

func (f *AuthenticationRespFrame) OK() bool

OK returns if Authentication is success.

func (*AuthenticationRespFrame) Reason added in v1.11.0

func (f *AuthenticationRespFrame) Reason() string

Reason returns the failed reason of Authentication.

func (*AuthenticationRespFrame) Type added in v1.11.0

func (f *AuthenticationRespFrame) Type() Type

Type gets the type of the AuthenticationRespFrame.

type BackflowFrame added in v1.8.0

type BackflowFrame struct {
	Tag      Tag
	Carriage []byte
}

BackflowFrame is a Y3 encoded bytes It's used to receive stream function processed result

func DecodeToBackflowFrame added in v1.8.0

func DecodeToBackflowFrame(buf []byte) (*BackflowFrame, error)

DecodeToBackflowFrame decodes Y3 encoded bytes to BackflowFrame

func NewBackflowFrame added in v1.8.0

func NewBackflowFrame(tag Tag, carriage []byte) *BackflowFrame

NewBackflowFrame creates a new BackflowFrame with a given tag and carriage

func (*BackflowFrame) Encode added in v1.8.0

func (f *BackflowFrame) Encode() []byte

Encode to Y3 encoded bytes

func (*BackflowFrame) GetCarriage added in v1.8.0

func (f *BackflowFrame) GetCarriage() []byte

GetCarriage return data

func (*BackflowFrame) GetDataTag added in v1.8.0

func (f *BackflowFrame) GetDataTag() Tag

GetDataTag return the Tag of user's data

func (*BackflowFrame) SetCarriage added in v1.8.0

func (f *BackflowFrame) SetCarriage(buf []byte) *BackflowFrame

SetCarriage sets the user's raw data

func (*BackflowFrame) Type added in v1.8.0

func (f *BackflowFrame) Type() Type

Type gets the type of Frame.

type DataFrame

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

DataFrame defines the data structure carried with user's data transferring within YoMo

func DecodeToDataFrame

func DecodeToDataFrame(buf []byte) (*DataFrame, error)

DecodeToDataFrame decode Y3 encoded bytes to `DataFrame`

func NewDataFrame

func NewDataFrame() (data *DataFrame)

NewDataFrame create `DataFrame` with a transactionID string, consider change transactionID to UUID type later

func (*DataFrame) Encode

func (d *DataFrame) Encode() []byte

Encode return Y3 encoded bytes of `DataFrame`

func (*DataFrame) GetCarriage

func (d *DataFrame) GetCarriage() []byte

GetCarriage return user's raw data in `DataFrame`

func (*DataFrame) GetDataTag

func (d *DataFrame) GetDataTag() Tag

GetDataTag return the Tag of user's data

func (*DataFrame) GetMetaFrame

func (d *DataFrame) GetMetaFrame() *MetaFrame

GetMetaFrame return MetaFrame.

func (*DataFrame) IsBroadcast added in v1.9.0

func (d *DataFrame) IsBroadcast() bool

IsBroadcast returns the broadcast mode is enabled

func (*DataFrame) SetBroadcast added in v1.9.0

func (d *DataFrame) SetBroadcast(enabled bool)

SetBroadcast set broadcast mode

func (*DataFrame) SetCarriage

func (d *DataFrame) SetCarriage(tag Tag, carriage []byte)

SetCarriage set user's raw data in `DataFrame`

func (*DataFrame) SetSourceID added in v1.8.0

func (d *DataFrame) SetSourceID(sourceID string)

SetSourceID set the source ID.

func (*DataFrame) SetTransactionID

func (d *DataFrame) SetTransactionID(transactionID string)

SetTransactionID set transactionID string

func (*DataFrame) SourceID added in v1.8.0

func (d *DataFrame) SourceID() string

SourceID returns source ID

func (DataFrame) String added in v1.10.0

func (d DataFrame) String() string

String method implements fmt %v

func (*DataFrame) Tag

func (d *DataFrame) Tag() Tag

Tag return the tag of carriage data.

func (*DataFrame) TransactionID

func (d *DataFrame) TransactionID() string

TransactionID return transactionID string

func (*DataFrame) Type

func (d *DataFrame) Type() Type

Type gets the type of Frame.

type Frame

type Frame interface {
	// Type gets the type of Frame.
	Type() Type

	// Encode the frame into []byte.
	Encode() []byte
}

Frame is the inferface for frame.

type GoawayFrame added in v1.7.3

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

GoawayFrame is a Y3 encoded bytes, Tag is a fixed value TYPE_ID_GOAWAY_FRAME

func DecodeToGoawayFrame added in v1.7.3

func DecodeToGoawayFrame(buf []byte) (*GoawayFrame, error)

DecodeToGoawayFrame decodes Y3 encoded bytes to GoawayFrame

func NewGoawayFrame added in v1.7.3

func NewGoawayFrame(msg string) *GoawayFrame

NewGoawayFrame creates a new GoawayFrame

func (*GoawayFrame) Encode added in v1.7.3

func (f *GoawayFrame) Encode() []byte

Encode to Y3 encoded bytes

func (*GoawayFrame) Message added in v1.7.3

func (f *GoawayFrame) Message() string

Message goaway message

func (*GoawayFrame) Type added in v1.7.3

func (f *GoawayFrame) Type() Type

Type gets the type of Frame.

type HandshakeAckFrame added in v1.10.0

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

HandshakeAckFrame is used to ack handshake, It is always that the first frame is HandshakeAckFrame after client acquire a new stream. HandshakeAckFrame is a Y3 encoded bytes.

func DecodeToHandshakeAckFrame added in v1.10.0

func DecodeToHandshakeAckFrame(buf []byte) (*HandshakeAckFrame, error)

DecodeToHandshakeAckFrame decodes Y3 encoded bytes to HandshakeAckFrame

func NewHandshakeAckFrame added in v1.10.0

func NewHandshakeAckFrame(streamID string) *HandshakeAckFrame

NewHandshakeAckFrame returns a HandshakeAckFrame.

func (*HandshakeAckFrame) Encode added in v1.10.0

func (f *HandshakeAckFrame) Encode() []byte

Encode encodes HandshakeAckFrame to Y3 encoded bytes.

func (*HandshakeAckFrame) StreamID added in v1.11.0

func (f *HandshakeAckFrame) StreamID() string

StreamID returns the id of stream be acked.

func (*HandshakeAckFrame) Type added in v1.10.0

func (f *HandshakeAckFrame) Type() Type

Type gets the type of the HandshakeAckFrame.

type HandshakeFrame

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

HandshakeFrame is the frame that client accquires new dataStream from server, It includes some of the information necessary to create a new dataStream. Server creates dataStream based on this information.

func DecodeToHandshakeFrame

func DecodeToHandshakeFrame(buf []byte) (*HandshakeFrame, error)

DecodeToHandshakeFrame decodes HandshakeFrame from bytes.

func NewHandshakeFrame

func NewHandshakeFrame(name string, id string, stream byte, observeDataTags []Tag, metadata []byte) *HandshakeFrame

NewHandshakeFrame returns HandshakeFrame.

func (*HandshakeFrame) Encode

func (h *HandshakeFrame) Encode() []byte

Encode encodes HandshakeFrame to bytes in Y3 codec.

func (*HandshakeFrame) ID added in v1.11.0

func (h *HandshakeFrame) ID() string

ID represents the dataStream ID, the ID must be an unique string.

func (*HandshakeFrame) Metadata added in v1.11.0

func (h *HandshakeFrame) Metadata() []byte

Metadata holds stream metadata, metadata stores information for route the data.

func (*HandshakeFrame) Name

func (h *HandshakeFrame) Name() string

Name is the name of dataStream.

func (*HandshakeFrame) ObserveDataTags added in v1.6.0

func (h *HandshakeFrame) ObserveDataTags() []Tag

ObserveDataTags are the stream data tag list.

func (*HandshakeFrame) StreamType added in v1.11.0

func (h *HandshakeFrame) StreamType() byte

StreamType represents dataStream type (Source | SFN | UpstreamZipper). different StreamType has different behaviors in server side.

func (*HandshakeFrame) Type

func (h *HandshakeFrame) Type() Type

Type returns the type of HandshakeFrame.

type HandshakeRejectedFrame added in v1.12.0

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

HandshakeRejectedFrame be used to reject a Handshake. HandshakeRejectedFrame is a Y3 encoded bytes.

func DecodeToHandshakeRejectedFrame added in v1.12.0

func DecodeToHandshakeRejectedFrame(buf []byte) (*HandshakeRejectedFrame, error)

DecodeToHandshakeRejectedFrame decodes Y3 encoded bytes to HandshakeRejectedFrame.

func NewHandshakeRejectedFrame added in v1.12.0

func NewHandshakeRejectedFrame(streamID, reason string) *HandshakeRejectedFrame

NewHandshakeRejectedFrame returns a HandshakeRejectedFrame.

func (*HandshakeRejectedFrame) Encode added in v1.12.0

func (f *HandshakeRejectedFrame) Encode() []byte

Encode encodes HandshakeRejectedFrame to Y3 encoded bytes.

func (*HandshakeRejectedFrame) Reason added in v1.12.0

func (f *HandshakeRejectedFrame) Reason() string

Reason returns the reason for the rejection of a Handshake, if it was rejected.

func (*HandshakeRejectedFrame) StreamID added in v1.12.0

func (f *HandshakeRejectedFrame) StreamID() string

StreamID returns the streamID of handshake be rejected.

func (*HandshakeRejectedFrame) Type added in v1.12.0

func (f *HandshakeRejectedFrame) Type() Type

Type gets the type of the HandshakeRejectedFrame.

type MetaFrame

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

MetaFrame is a Y3 encoded bytes, SeqID is a fixed value of TYPE_ID_TRANSACTION. used for describes metadata for a DataFrame.

func (*MetaFrame) Encode

func (m *MetaFrame) Encode() []byte

Encode implements Frame.Encode method.

func (*MetaFrame) IsBroadcast added in v1.9.0

func (m *MetaFrame) IsBroadcast() bool

IsBroadcast returns the broadcast mode is enabled

func (*MetaFrame) Metadata added in v1.7.4

func (m *MetaFrame) Metadata() []byte

Metadata returns the extra info of the application

func (*MetaFrame) SetBroadcast added in v1.9.0

func (m *MetaFrame) SetBroadcast(enabled bool)

SetBroadcast set broadcast mode

func (*MetaFrame) SetMetadata added in v1.7.4

func (m *MetaFrame) SetMetadata(metadata []byte)

SetMetadata set the extra info of the application

func (*MetaFrame) SetSourceID added in v1.8.0

func (m *MetaFrame) SetSourceID(sourceID string)

SetSourceID set the source ID.

func (*MetaFrame) SetTransactionID

func (m *MetaFrame) SetTransactionID(transactionID string)

SetTransactionID set the transaction ID.

func (*MetaFrame) SourceID added in v1.8.0

func (m *MetaFrame) SourceID() string

SourceID returns source ID

func (*MetaFrame) TransactionID

func (m *MetaFrame) TransactionID() string

TransactionID returns transactionID

type PayloadFrame

type PayloadFrame struct {
	Tag      Tag
	Carriage []byte
}

PayloadFrame is a Y3 encoded bytes, Tag is a fixed value TYPE_ID_PAYLOAD_FRAME the Len is the length of Val. Val is also a Y3 encoded PrimitivePacket, storing raw bytes as user's data

func (*PayloadFrame) Encode

func (m *PayloadFrame) Encode() []byte

Encode to Y3 encoded bytes

func (*PayloadFrame) SetCarriage

func (m *PayloadFrame) SetCarriage(buf []byte) *PayloadFrame

SetCarriage sets the user's raw data

type ReadWriter added in v1.10.0

type ReadWriter interface {
	Reader
	Writer
}

ReadWriter is the interface that groups the ReadFrame and WriteFrame methods.

type Reader added in v1.10.0

type Reader interface {
	// ReadFrame reads frame, if error, the error returned is not empty
	// and frame returned is nil.
	ReadFrame() (Frame, error)
}

Reader reads frame from underlying stream.

type RejectedFrame

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

RejectedFrame is a Y3 encoded bytes, Tag is a fixed value TYPE_ID_REJECTED_FRAME

func DecodeToRejectedFrame

func DecodeToRejectedFrame(buf []byte) (*RejectedFrame, error)

DecodeToRejectedFrame decodes Y3 encoded bytes to RejectedFrame

func NewRejectedFrame

func NewRejectedFrame(msg string) *RejectedFrame

NewRejectedFrame creates a new RejectedFrame with a given TagID of user's data

func (*RejectedFrame) Encode

func (f *RejectedFrame) Encode() []byte

Encode to Y3 encoded bytes

func (*RejectedFrame) Message added in v1.7.3

func (f *RejectedFrame) Message() string

Message rejected message

func (*RejectedFrame) Type

func (f *RejectedFrame) Type() Type

Type gets the type of Frame.

type Tag added in v1.10.0

type Tag uint32

Tag is used for data router

type Type

type Type uint8

Type represents the type of frame.

const (
	// DataFrame
	TagOfDataFrame Type = 0x3F
	// MetaFrame of DataFrame
	TagOfMetaFrame     Type = 0x2F
	TagOfMetadata      Type = 0x03
	TagOfTransactionID Type = 0x01
	TagOfSourceID      Type = 0x02
	TagOfBroadcast     Type = 0x04
	// PayloadFrame of DataFrame
	TagOfPayloadFrame     Type = 0x2E
	TagOfPayloadDataTag   Type = 0x01
	TagOfPayloadCarriage  Type = 0x02
	TagOfBackflowFrame    Type = 0x2D
	TagOfBackflowDataTag  Type = 0x01
	TagOfBackflowCarriage Type = 0x02

	TagOfTokenFrame Type = 0x3E

	// AuthenticationFrame
	TagOfAuthenticationFrame   Type = 0x03
	TagOfAuthenticationName    Type = 0x04
	TagOfAuthenticationPayload Type = 0x05

	// AuthenticationRespFrame
	TagOfAuthenticationRespFrame  Type = 0x11
	TagOfAuthenticationRespOk     Type = 0x12
	TagOfAuthenticationRespReason Type = 0x13

	// HandshakeFrame
	TagOfHandshakeFrame           Type = 0x31
	TagOfHandshakeName            Type = 0x01
	TagOfHandshakeStreamType      Type = 0x02
	TagOfHandshakeID              Type = 0x03
	TagOfHandshakeObserveDataTags Type = 0x06
	TagOfHandshakeMetadata        Type = 0x07

	// HandshakeRejectedFrame
	TagOfHandshakeRejectedFrame    Type = 0x14
	TagOfHandshakeRejectedStreamID Type = 0x15
	TagOfHandshakeRejectedReason   Type = 0x16

	// TagOfHandshakeAckFrame
	TagOfHandshakeAckFrame    Type = 0x29
	TagOfHandshakeAckStreamID Type = 0x28

	TagOfPingFrame       Type = 0x3C
	TagOfPongFrame       Type = 0x3B
	TagOfAcceptedFrame   Type = 0x3A
	TagOfRejectedFrame   Type = 0x39
	TagOfRejectedMessage Type = 0x02
	// GoawayFrame
	TagOfGoawayFrame   Type = 0x30
	TagOfGoawayCode    Type = 0x01
	TagOfGoawayMessage Type = 0x02
)

Kinds of frames transferable within YoMo

func (Type) String

func (f Type) String() string

type Writer added in v1.10.0

type Writer interface {
	WriteFrame(frm Frame) error
}

Writer is the interface that wraps the WriteFrame method, It writes frm to the underlying data stream.

Jump to

Keyboard shortcuts

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