Expand description

Behavior module

Behavior instances are identified through a densely packed identifier called BehaviorInstanceId.

BehaviorInstanceId uniquely identifies a triple of:

  • An external behavior module handle
  • A behavior type in this behavior module
  • A behavior instance of this behavior type in this module

Different users of this identifier need different parts:

  • BehaviorModuleHandle, while internal to Ark, consists of the high 16 bits of this id, and can be used to index into an array of behavior modules
  • BehaviorTypeId consists of the module handle as well as the local type id, that is, the high 32-bits. It is used to create new behavior instances, through explicit creation or deserialization.
  • ForeignBehaviorInstanceId consists of the parts that are local to a behavior module. Ark will complete it together with a BehaviorModuleHandle into a BehaviorInstanceId.

/––––– ForeignBehaviorInstanceId ————
/
LocalBehaviorInstanceId LocalBehaviorTypeId BehaviorModuleHandle 0…………………….31 32………………….47 48…………………….63 \ / -––––––– BehaviorTypeId ——————/ \ / -––––––––––––– BehaviorInstanceId ––––––––––––––/

Macros

By passing a type that implements the BehaviorEntry trait, this macro will hook up and route the behavior module’s raw entry points to the trait methods.

Structs

A unique identifier of a couple comprising a local behavior type id within a behavior module as well as a local instance id.

An incoming message from a controller module

An incoming message sent from the controller module

A behavior instance index. May not be unique overall, but must form unique pairs with the corresponding LocalBehaviorTypeId of the instance’s type, resulting in a ForeignBehaviorInstanceId.

Describes a behavior local to a behavior module

An index of the behavior type, local to a behavior module.

Contains all registration info for an external behavior module

Enums

Error return codes for API functions.

Target address of an incoming message.

Traits

Ergonomic wrapper around a behavior module’s entry points.

Type Definitions