Documentation ¶
Index ¶
- type Command
- type CreateEntityCommand
- type Decoder
- type DecoderF
- type Decoders
- type DeleteEntityCommand
- type Dispatcher
- type EntityCreator
- type EntityDeleter
- type EntityManager
- type EntityMarshaller
- type EntityUpdater
- type LocalDispatcher
- type SyncSnapshotCommand
- type UpdateEntityCommand
- type Validatable
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Command ¶
type Command interface { // Apply runs the commands Apply(ctx boltz.MutateContext) error // GetChangeContext returns the change context associated with the command GetChangeContext() *change.Context // Encode returns a serialized representation of the command Encode() ([]byte, error) }
Command instances represent actions to be taken by the fabric controller. They are serializable, so they can be shipped from one controller for RAFT coordination
type CreateEntityCommand ¶
type CreateEntityCommand[T models.Entity] struct { Context *change.Context Creator EntityCreator[T] Entity T PostCreateHook func(ctx boltz.MutateContext, entity T) error Flags uint32 }
func (*CreateEntityCommand[T]) Apply ¶
func (self *CreateEntityCommand[T]) Apply(ctx boltz.MutateContext) error
func (*CreateEntityCommand[T]) Encode ¶
func (self *CreateEntityCommand[T]) Encode() ([]byte, error)
func (*CreateEntityCommand[T]) GetChangeContext ¶ added in v0.23.0
func (self *CreateEntityCommand[T]) GetChangeContext() *change.Context
type Decoders ¶
type Decoders interface { Register(id int32, decoder Decoder) RegisterF(id int32, decoder DecoderF) Decode(data []byte) (Command, error) GetDecoder(id int32) Decoder Clear() }
func GetDefaultDecoders ¶
func GetDefaultDecoders() Decoders
func NewDecoders ¶
func NewDecoders() Decoders
type DeleteEntityCommand ¶
type DeleteEntityCommand struct { Context *change.Context Deleter EntityDeleter Id string }
func (*DeleteEntityCommand) Apply ¶
func (self *DeleteEntityCommand) Apply(ctx boltz.MutateContext) error
func (*DeleteEntityCommand) Encode ¶
func (self *DeleteEntityCommand) Encode() ([]byte, error)
func (*DeleteEntityCommand) GetChangeContext ¶ added in v0.23.0
func (self *DeleteEntityCommand) GetChangeContext() *change.Context
type Dispatcher ¶
type Dispatcher interface { Dispatch(command Command) error IsLeaderOrLeaderless() bool GetPeers() map[string]channel.Channel }
Dispatcher instances will take a command and either send it to the leader to be applied, or if the current system is the leader, apply it locally
type EntityCreator ¶
type EntityCreator[T models.Entity] interface { EntityMarshaller[T] // ApplyCreate creates the entity described by the given command ApplyCreate(cmd *CreateEntityCommand[T], ctx boltz.MutateContext) error }
EntityCreator instances can apply a create entity command to create entities of a given type
type EntityDeleter ¶
type EntityDeleter interface { GetEntityTypeId() string // ApplyDelete deletes the entity described by the given command ApplyDelete(cmd *DeleteEntityCommand, ctx boltz.MutateContext) error }
EntityDeleter instances can apply a delete entity command to delete entities of a given type
type EntityManager ¶
type EntityManager[T models.Entity] interface { EntityCreator[T] EntityUpdater[T] EntityDeleter }
EntityManager instances can handle create, update and delete entities of a specific type
type EntityMarshaller ¶
type EntityMarshaller[T any] interface { // GetEntityTypeId returns the entity type id. This is distinct from the Store entity id // which may be shared by types, such as service and router. The entity type is unique // for each type GetEntityTypeId() string // Marshall marshals the entity to a bytes encoded format Marshall(entity T) ([]byte, error) // Unmarshall unmarshalls the bytes back into an entity Unmarshall(bytes []byte) (T, error) }
EntityMarshaller instances can marshal and unmarshal entities of the type that they manage as well as knowing their entity type
type EntityUpdater ¶
type EntityUpdater[T models.Entity] interface { EntityMarshaller[T] // ApplyUpdate updates the entity described by the given command ApplyUpdate(cmd *UpdateEntityCommand[T], ctx boltz.MutateContext) error }
EntityUpdater instances can apply an update entity command to update entities of a given type
type LocalDispatcher ¶
type LocalDispatcher struct {
EncodeDecodeCommands bool
}
LocalDispatcher should be used when running a non-clustered system
func (*LocalDispatcher) Dispatch ¶
func (self *LocalDispatcher) Dispatch(command Command) error
func (*LocalDispatcher) GetPeers ¶ added in v0.22.29
func (self *LocalDispatcher) GetPeers() map[string]channel.Channel
func (*LocalDispatcher) IsLeaderOrLeaderless ¶ added in v0.22.7
func (self *LocalDispatcher) IsLeaderOrLeaderless() bool
type SyncSnapshotCommand ¶ added in v0.19.48
type SyncSnapshotCommand struct { SnapshotId string Snapshot []byte SnapshotSink func(cmd *SyncSnapshotCommand) error }
func (*SyncSnapshotCommand) Apply ¶ added in v0.19.48
func (self *SyncSnapshotCommand) Apply(boltz.MutateContext) error
func (*SyncSnapshotCommand) Encode ¶ added in v0.19.48
func (self *SyncSnapshotCommand) Encode() ([]byte, error)
func (*SyncSnapshotCommand) GetChangeContext ¶ added in v0.23.0
func (self *SyncSnapshotCommand) GetChangeContext() *change.Context
type UpdateEntityCommand ¶
type UpdateEntityCommand[T models.Entity] struct { Context *change.Context Updater EntityUpdater[T] Entity T UpdatedFields fields.UpdatedFields Flags uint32 }
func (*UpdateEntityCommand[T]) Apply ¶
func (self *UpdateEntityCommand[T]) Apply(ctx boltz.MutateContext) error
func (*UpdateEntityCommand[T]) Encode ¶
func (self *UpdateEntityCommand[T]) Encode() ([]byte, error)
func (*UpdateEntityCommand[T]) GetChangeContext ¶ added in v0.23.0
func (self *UpdateEntityCommand[T]) GetChangeContext() *change.Context
type Validatable ¶
type Validatable interface {
Validate() error
}
Validatable instances can be validated. Command instances which implement Validable will be validated before Command.Apply is called