Overview
C API (Component Interface)
struct EventSendSignal { UINT32 flags; Symbol signal; UINT32 udata; const void* data; };

This event sends a signal to the framework.

Contract Wrappers

1199
stillActive()

Fields

UINT32 flags IN
None defined (must be zero).
Symbol signal IN
The signal (see below).
UINT32 udata IN
Signal data (meaning dependent on signal).
const void* IN
Additional signal data (meaning dependent on signal).

Return Values

See also General Interface Return Values.

C_OK

Result

  • The specified signal is sent to the framework from the calling component.

Signals

C_STILL_ACTIVE
Worker threads are monitored for hangs by the caller thread, and if a thread does not send this signal for TimeoutThreadHang milliseconds, the system will throw E_THREAD_HUNG, causing the execution to terminate. The signal is sent automatically by the framework between component events, which is usually often enough. However, if a process takes more than TimeoutThreadHang milliseconds to service a single event, the monitor will be triggered and execution will terminate. To avoid this, any process that is to perform extensive computation within the context of a single event should periodically send this signal. For example, send the signal once every few hundred milliseconds as you progress through a computationally expensive loop.

Example

Taken from 1199.

C++ Source Code (against 1199)
void stillActive() { EventSendSignal data; data.flags = 0; data.signal = C_STILL_ACTIVE; data.udata = 0; data.data = 0; EngineEvent event; event.hCaller = hComponent; event.flags = 0; event.type = ENGINE_EVENT_SEND_SIGNAL; event.data = &data; ____SUCCESS(brahms_engineEvent(&event)); }