wire

package
v0.8.2 Latest Latest
Warning

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

Go to latest
Published: Mar 20, 2024 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

wire implements the grpc wire protocol that is used later on by the state machine to communicate with restate runtime.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrUnexpectedMessage = fmt.Errorf("unexpected message")
)

Functions

This section is empty.

Types

type BackgroundInvokeEntryMessage

type BackgroundInvokeEntryMessage struct {
	Header
	Payload protocol.BackgroundInvokeEntryMessage
}

type ClearAllStateEntryMessage

type ClearAllStateEntryMessage struct {
	Header
	Payload protocol.ClearAllStateEntryMessage
}

type ClearStateEntryMessage

type ClearStateEntryMessage struct {
	Header
	Payload protocol.ClearStateEntryMessage
}

type CompletionMessage

type CompletionMessage struct {
	Header
	Payload protocol.CompletionMessage
}

type EntryAckMessage added in v0.8.2

type EntryAckMessage struct {
	Header
	Payload protocol.EntryAckMessage
}

type Flag

type Flag uint16

Flag section of the header this can have a different meaning based on message type.

const (
	// masks
	FlagCompleted   Flag = 0x0001
	FlagRequiresAck Flag = 0x8000

	VersionMask = 0x03FF
)

func (Flag) Ack

func (r Flag) Ack() bool

func (Flag) Completed

func (r Flag) Completed() bool

type GetStateEntryMessage

type GetStateEntryMessage struct {
	Header
	Payload protocol.GetStateEntryMessage
}

type GetStateKeysEntryMessage

type GetStateKeysEntryMessage struct {
	Header
	Payload protocol.GetStateKeysEntryMessage
}
type Header struct {
	TypeCode Type
	Flag     Flag
	Length   uint32
}

func (*Header) Flags

func (t *Header) Flags() Flag

func (*Header) Type

func (t *Header) Type() Type

type InvokeEntryMessage

type InvokeEntryMessage struct {
	Header
	Payload protocol.InvokeEntryMessage
}

type Message

type Message interface {
	Type() Type
	Flags() Flag
}

type OutputStreamEntry

type OutputStreamEntry struct {
	Header
	Payload protocol.OutputStreamEntryMessage
}

type PollInputEntry

type PollInputEntry struct {
	Header
	Payload protocol.PollInputStreamEntryMessage
}

type Protocol

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

Protocol implements the wire protocol to abstract receiving and sending messages Note that Protocol is not concurrent safe and it's up to the user to make sure it's used correctly

func NewProtocol

func NewProtocol(stream io.ReadWriter) *Protocol

func (*Protocol) Read

func (s *Protocol) Read() (Message, error)

func (*Protocol) ReadAck added in v0.8.2

func (s *Protocol) ReadAck() (uint32, error)

func (*Protocol) Write

func (s *Protocol) Write(message proto.Message, flags ...Flag) error

type Reader

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

func (*Reader) Next

func (r *Reader) Next() <-chan ReaderMessage

func (*Reader) Read

func (r *Reader) Read(ctx context.Context) (Message, error)

Read returns next message. Easier to use when you need to wait on a message during a context ctx

type ReaderMessage

type ReaderMessage struct {
	Message Message
	Err     error
}

type SetStateEntryMessage

type SetStateEntryMessage struct {
	Header
	Payload protocol.SetStateEntryMessage
}

type SideEffectEntryMessage

type SideEffectEntryMessage struct {
	Header
	Payload javascript.SideEffectEntryMessage
}

type SleepEntryMessage

type SleepEntryMessage struct {
	Header
	Payload protocol.SleepEntryMessage
}

type StartMessage

type StartMessage struct {
	Header
	Version uint16
	Payload protocol.StartMessage
}

type Type

type Type uint16
const (
	// control
	StartMessageType      Type = 0x0000
	CompletionMessageType Type = 0x0000 + 1
	SuspensionMessageType Type = 0x0000 + 2
	ErrorMessageType      Type = 0x0000 + 3
	EntryAckMessageType   Type = 0x0000 + 4
	EndMessageType        Type = 0x0000 + 5

	// Input/Output
	PollInputEntryMessageType    Type = 0x0400
	OutputStreamEntryMessageType Type = 0x0400 + 1

	// State
	GetStateEntryMessageType      Type = 0x0800
	SetStateEntryMessageType      Type = 0x0800 + 1
	ClearStateEntryMessageType    Type = 0x0800 + 2
	ClearAllStateEntryMessageType Type = 0x0800 + 3
	GetStateKeysEntryMessageType  Type = 0x0800 + 4

	//SysCalls
	SleepEntryMessageType            Type = 0x0C00
	InvokeEntryMessageType           Type = 0x0C00 + 1
	BackgroundInvokeEntryMessageType Type = 0x0C00 + 2

	// SideEffect
	SideEffectEntryMessageType Type = 0xFC00 + 1
)

func (Type) String

func (t Type) String() string

Jump to

Keyboard shortcuts

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