wire

package
v0.13.0 Latest Latest
Warning

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

Go to latest
Published: Nov 8, 2024 License: MIT Imports: 10 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

func NewProtocol

func NewProtocol(stream io.ReadWriter) *protoc

Types

type AckableMessage

type AckableMessage interface {
	Message
	Acked() bool
	Await(ctx context.Context, entryIndex uint32)
	Ack()
}

type AwakeableEntryMessage

type AwakeableEntryMessage struct {
	protocol.AwakeableEntryMessage
	// contains filtered or unexported fields
}

func (*AwakeableEntryMessage) Await

func (c *AwakeableEntryMessage) Await(suspensionCtx context.Context, entryIndex uint32)

func (*AwakeableEntryMessage) Complete

func (*AwakeableEntryMessage) Completed

func (c *AwakeableEntryMessage) Completed() bool

func (*AwakeableEntryMessage) Done

func (c *AwakeableEntryMessage) Done() <-chan struct{}

type CallEntryMessage

type CallEntryMessage struct {
	protocol.CallEntryMessage
	// contains filtered or unexported fields
}

func (*CallEntryMessage) Await

func (c *CallEntryMessage) Await(suspensionCtx context.Context, entryIndex uint32)

func (*CallEntryMessage) Complete

func (*CallEntryMessage) Completed

func (c *CallEntryMessage) Completed() bool

func (*CallEntryMessage) Done

func (c *CallEntryMessage) Done() <-chan struct{}

type ClearAllStateEntryMessage

type ClearAllStateEntryMessage struct {
	Header
	protocol.ClearAllStateEntryMessage
}

type ClearStateEntryMessage

type ClearStateEntryMessage struct {
	Header
	protocol.ClearStateEntryMessage
}

type CompleteAwakeableEntryMessage

type CompleteAwakeableEntryMessage struct {
	Header
	protocol.CompleteAwakeableEntryMessage
}

type CompletePromiseEntryMessage added in v0.12.0

type CompletePromiseEntryMessage struct {
	protocol.CompletePromiseEntryMessage
	// contains filtered or unexported fields
}

func (*CompletePromiseEntryMessage) Await added in v0.12.0

func (c *CompletePromiseEntryMessage) Await(suspensionCtx context.Context, entryIndex uint32)

func (*CompletePromiseEntryMessage) Complete added in v0.12.0

func (*CompletePromiseEntryMessage) Completed added in v0.12.0

func (c *CompletePromiseEntryMessage) Completed() bool

func (*CompletePromiseEntryMessage) Done added in v0.12.0

func (c *CompletePromiseEntryMessage) Done() <-chan struct{}

type CompleteableMessage

type CompleteableMessage interface {
	Message
	// only for use in selector
	Done() <-chan struct{}
	Completed() bool
	Await(suspensionCtx context.Context, entryIndex uint32)
	Complete(*protocol.CompletionMessage) error
}

type CompletionMessage

type CompletionMessage struct {
	Header
	protocol.CompletionMessage
}

type EndMessage

type EndMessage struct {
	Header
	protocol.EndMessage
}

type EntryAckMessage

type EntryAckMessage struct {
	Header
	protocol.EntryAckMessage
}

type ErrorMessage

type ErrorMessage struct {
	Header
	protocol.ErrorMessage
}

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 GetPromiseEntryMessage added in v0.12.0

type GetPromiseEntryMessage struct {
	protocol.GetPromiseEntryMessage
	// contains filtered or unexported fields
}

func (*GetPromiseEntryMessage) Await added in v0.12.0

func (c *GetPromiseEntryMessage) Await(suspensionCtx context.Context, entryIndex uint32)

func (*GetPromiseEntryMessage) Complete added in v0.12.0

func (*GetPromiseEntryMessage) Completed added in v0.12.0

func (c *GetPromiseEntryMessage) Completed() bool

func (*GetPromiseEntryMessage) Done added in v0.12.0

func (c *GetPromiseEntryMessage) Done() <-chan struct{}

type GetStateEntryMessage

type GetStateEntryMessage struct {
	protocol.GetStateEntryMessage
	// contains filtered or unexported fields
}

func (*GetStateEntryMessage) Await

func (c *GetStateEntryMessage) Await(suspensionCtx context.Context, entryIndex uint32)

func (*GetStateEntryMessage) Complete

func (*GetStateEntryMessage) Completed

func (c *GetStateEntryMessage) Completed() bool

func (*GetStateEntryMessage) Done

func (c *GetStateEntryMessage) Done() <-chan struct{}

type GetStateKeysEntryMessage

type GetStateKeysEntryMessage struct {
	protocol.GetStateKeysEntryMessage
	// contains filtered or unexported fields
}

func (*GetStateKeysEntryMessage) Await

func (c *GetStateKeysEntryMessage) Await(suspensionCtx context.Context, entryIndex uint32)

func (*GetStateKeysEntryMessage) Complete

func (*GetStateKeysEntryMessage) Completed

func (c *GetStateKeysEntryMessage) Completed() bool

func (*GetStateKeysEntryMessage) Done

func (c *GetStateKeysEntryMessage) Done() <-chan struct{}
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 InputEntryMessage

type InputEntryMessage struct {
	Header
	protocol.InputEntryMessage
}

type Message

type Message interface {
	proto.Message
}

type OneWayCallEntryMessage

type OneWayCallEntryMessage struct {
	Header
	protocol.OneWayCallEntryMessage
}

type OutputEntryMessage

type OutputEntryMessage struct {
	Header
	protocol.OutputEntryMessage
}

type PeekPromiseEntryMessage added in v0.12.0

type PeekPromiseEntryMessage struct {
	protocol.PeekPromiseEntryMessage
	// contains filtered or unexported fields
}

func (*PeekPromiseEntryMessage) Await added in v0.12.0

func (c *PeekPromiseEntryMessage) Await(suspensionCtx context.Context, entryIndex uint32)

func (*PeekPromiseEntryMessage) Complete added in v0.12.0

func (*PeekPromiseEntryMessage) Completed added in v0.12.0

func (c *PeekPromiseEntryMessage) Completed() bool

func (*PeekPromiseEntryMessage) Done added in v0.12.0

func (c *PeekPromiseEntryMessage) Done() <-chan struct{}

type Protocol

type Protocol interface {
	Read() (Message, Type, error)
	Write(typ Type, message Message) 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 RunEntryMessage

type RunEntryMessage struct {
	protocol.RunEntryMessage
	// contains filtered or unexported fields
}

func (*RunEntryMessage) Ack

func (c *RunEntryMessage) Ack()

func (*RunEntryMessage) Acked

func (c *RunEntryMessage) Acked() bool

func (*RunEntryMessage) Await

func (c *RunEntryMessage) Await(suspensionCtx context.Context, entryIndex uint32)

type SelectorEntryMessage

type SelectorEntryMessage struct {
	_go.SelectorEntryMessage
	// contains filtered or unexported fields
}

func (*SelectorEntryMessage) Ack

func (c *SelectorEntryMessage) Ack()

func (*SelectorEntryMessage) Acked

func (c *SelectorEntryMessage) Acked() bool

func (*SelectorEntryMessage) Await

func (c *SelectorEntryMessage) Await(suspensionCtx context.Context, entryIndex uint32)

type SetStateEntryMessage

type SetStateEntryMessage struct {
	Header
	protocol.SetStateEntryMessage
}

type SleepEntryMessage

type SleepEntryMessage struct {
	protocol.SleepEntryMessage
	// contains filtered or unexported fields
}

func (*SleepEntryMessage) Await

func (c *SleepEntryMessage) Await(suspensionCtx context.Context, entryIndex uint32)

func (*SleepEntryMessage) Complete

func (*SleepEntryMessage) Completed

func (c *SleepEntryMessage) Completed() bool

func (*SleepEntryMessage) Done

func (c *SleepEntryMessage) Done() <-chan struct{}

type StartMessage

type StartMessage struct {
	Header
	protocol.StartMessage
}

type SuspensionMessage

type SuspensionMessage struct {
	Header
	protocol.SuspensionMessage
}

type SuspensionPanic

type SuspensionPanic struct {
	EntryIndexes []uint32
	Err          error
}

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
	InputEntryMessageType  Type = 0x0400
	OutputEntryMessageType Type = 0x0400 + 1

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

	// Promises
	GetPromiseEntryMessageType      Type = 0x0800 + 8
	PeekPromiseEntryMessageType     Type = 0x0800 + 9
	CompletePromiseEntryMessageType Type = 0x0800 + 10

	// SysCalls
	SleepEntryMessageType             Type = 0x0C00
	CallEntryMessageType              Type = 0x0C00 + 1
	OneWayCallEntryMessageType        Type = 0x0C00 + 2
	AwakeableEntryMessageType         Type = 0x0C00 + 3
	CompleteAwakeableEntryMessageType Type = 0x0C00 + 4
	RunEntryMessageType               Type = 0x0C00 + 5

	// Custom
	SelectorEntryMessageType Type = 0xFC03
)

func MessageType

func MessageType(message Message) Type

func (Type) String

func (t Type) String() string

func (Type) UInt32

func (t Type) UInt32() *uint32

Jump to

Keyboard shortcuts

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