isc_event_counts()
Go Up to API Function Reference
Compares event parameter buffers (EPBs) to determine which events have been posted, and prepares the event parameter buffers for the next call to isc_que_events
() or isc_wait_for_event()
.
Syntax
void isc_event_counts (
ISC_ULONG *result_array
short buffer_length,
char *event_buffer,
char *result_buffer);
Parameter | Type | Description |
---|---|---|
|
|
|
|
|
Length of the event parameter buffers, returned by the |
|
|
Pointer to the event parameter buffer that specifies the event counts prior to the previous call to |
|
|
Pointer to the event parameter buffer filled in as a result of posting an event |
Description
isc_event_counts()
compares the event counts in the event parameter buffers, event_buffer
and result_buffer
, and sets up to the first 15 elements of result_array
to contain the differences. It then modifies event_buffer
to contain the same event counts as result_buffer
in preparation for the next call to either isc_wait_for_event()
or isc_que_events()
.
The counts in event_buffer
specify how many times each event had been posted since the previous call to isc_event_wait()
or isc_que_events()
. The counts in result_buffer
equal the values in event_buffer
plus the number of additional times an event is posted after the current call to isc_event_wait()
or isc_que_events()
. If an event is posted after a call to either of these functions, its count is greater in result_buffer
than in event_buffer
. Other event counts may also be greater because an event may have been posted between calls to either of these functions. The values in status_array
are the differences in values between event_buffer
and result_buffer
. This mechanism of comparing all the counts ensures that no event postings are missed.
Example
The following program fragment illustrates the set-up and waiting on any of the events named “DEC”, “HP”, or “SUN”, then calling isc_event_counts()
to determine which events have been posted:
#include <ibase.h> #define number_of_stocks 3; char *event_buffer, *result_buffer; ISC_result_array[20]; char *event_names[] = {"DEC", "HP", "SUN"}; long length; int i; length = isc_event_block( &event_buffer, &result_buffer, number_of_stocks, "DEC", "HP", "SUN"); isc_wait_for_event( result_array, &database_handle, /* Set by previous isc_attach_database(). */ length, /* Returned from isc_event_block(). */ event_buffer, result_buffer); if (result_vector[0] == 1 && result_array[1]){ isc_print_status(status_vector); /* Display error message. */ return(1); } isc_event_counts(result_vector,(short) length, event_buffer, result_buffer); for (i=0; i<number_of_stocks; i++) if (result_vector[i]) { /* The event has been posted. Do whatever is appropriate, for example, * initiating a buy or sell order. */ }
Return value
None.