C API (Component Interface)
The module information structure holds information about the module, as opposed to information about the component (cf.
ComponentInfo). This structure is returned to the framework by the module during EVENT_MODULE_INIT.
- The revision of the Component Interface against which the module was compiled.
- The revision of the Component Interface that the module requires in order to run.
- This field is used to indicate the binding against which a particular component is built (e.g. 1199, 1266, etc.). This field is included to allow fixes to be applied if bindings are found to have bugs, and must be supplied though it is not currently used other than for display.
- See below.
Periodically, the Component Interface may be extended, adding more fields to structures that are passed between the component and the framework. New components/engines can read/write these fields, but old ones cannot. The management of this interface revision process is described in detail on the page Module Events.
- If set, the Engine will instantiate all copies of this process in a single thread. If multiple copies of this process are placed in separate threads by initial thread assignment, thread reassignment will cause all copies to run in the first copy's thread. Set this flag if it is not safe to run more than one instance of the process concurrently.
- If set, the framework will not move components instantiated by this module from one worker thread to another during dynamic load balancing. In other words, all events received by components will be called in the same worker thread (with the possible exception of EVENT_MODULE_INIT). Any component that uses thread-sensitive resources (e.g. has GUI components) should set this flag.
- If set, the framework will not move components instantiated by this module from one voice to another during dynamic load balancing. In other words, all events received by components will be called from the same voice (with the possible exception of EVENT_MODULE_INIT). Any component that uses voice-sensitive resources (like local hardware) should set this flag.
- The framework may still instantiate more than one instance of a Process that sets F_NO_CONCURRENCY and run them interleaved, so setting this flag does not relieve the process of data encapsulation responsibilities.
- F_NO_CONCURRENCY is currently only respected for Process components. If you intend to author a Data (why???) or Utility (possibly...) component that is not thread-safe, you will have to first request a new release that respects this flag for your component type.
See the discussion at