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.