 |
Index for Section 3 |
|
 |
Alphabetical listing for E |
|
 |
Bottom of page |
|
EvmEventPost(3)
NAME
EvmEventPost, EvmEventPostVa - Posts an event
SYNOPSIS
#include <evm/evm.h>
EvmStatus_t EvmEventPost(
EvmConnection_t connection,
const EvmEvent_t event );
EvmStatus_t EvmEventPostVa(
EvmConnection_t connection,
const EvmEvent_t event,
[EvmItemId_t item_id,
const EvmItemValue_t item_id]...,
EvmITEM_NONE );
OPERANDS
connection
The connection through which events are posted. See EvmConnCreate(3).
event
The event that is to be posted to the specified connection. See
EvmEventCreate(3).
item_id
The identifier for the event data item to be set. See EvmItemSet(3) for
possible values for this operand, and the data contained by the data
item.
item_value
The value to be stored in the associated item indicated by item_id.
DESCRIPTION
An EVM client program uses the routines described on this page to pass
events to the EVM daemon, for distribution to subscribers.
EvmEventPost() posts an event that has already been created with
EvmEventCreate() or EvmEventCreateVa().
EvmEventPostVa() allows you to create, post and destroy an event in a
single call. It first creates a new event, adding to it any data items
supplied in the call. If the event operand is not NULL, the contents of the
supplied event are then merged into the new event, and the new event is
posted. The new event is destroyed before the routine returns, and the
supplied event (if any) is unchanged. See EvmItemSetVa(3) for details of
the item_ids and item_values that may be passed as operands to this
routine.
If you pass NULL as the connection operand to either of these routines the
event is posted to the local daemon, using a temporary connection, which is
destroyed before the routine returns. Because of the overhead associated
with creating and destroying an EVM connection, you should pass NULL only
if your program rarely posts events.
If either routine is unable to pass the event to the daemon, the error is
reported immediately through the return code. If the event is passed to the
daemon, the type of response depends on the response mode specified when
the connection was created.
NOTES
1. These routines do not destroy the event passed as the event operand.
You must explicitly call EvmEventDestroy() to destroy the event and
free its memory once it is no longer needed.
2. You should avoid posting a large number of events in rapid succession,
since this may cause the connection's send buffer to fill, and the
posting process to block until the EVM daemon has relieved some or all
of the data. Although this is a normal part of process
synchronization, some high-performance processes may prefer to block
as infrequently as possible. EvmConnControl() can be used to increase
the size of the send buffer. See EvmConnControl(3) for more
information.
3. If you use extended item_ids to supply names and values of variable
items to EvmEventPostVa(), be sure to supply the correct number of
operands for each. A variable name and value is required for all such
items, and some variable types require an additional argument. See
EvmItemSetVa(3) for more information.
RESTRICTIONS
None
RETURN VALUES
EvmERROR_NONE
The operation was completed without error.
EvmERROR_EVENT_REJECTED
The EVM daemon rejected the event. The most likely reasons for this to
happen are that no template has been registered for the event, or that
the caller is not authorized to post the event. See evmtemplate(4) and
evm.auth(4) for more information.
EvmERROR_INVALID_ARGUMENT
One of the arguments to the function was invalid.
EvmERROR_INVALID_VALUE
A value in a structure member is invalid.
EvmERROR_NO_MEMORY
An operation failed because an attempt to acquire heap memory failed.
EvmERROR_QUEUED
The connection's output buffer is full, and the event has been queued
in heap space. Another attempt will be made to flush the queue when the
next call is made to EvmEventPost(3), or when the caller invokes
EvmConnFlush(3). This error code is only returned for connections for
which EvmConnControl(3) has been invoked with the request argument set
to EvmCONN_POST_NONBLOCK_SET.
EvmERROR_READ
A read error occurred while reading from the EVM daemon connection. The
connection is no longer usable, and the caller should invoke
EvmConnDestroy() to destroy it.
EvmERROR_WRITE
A write error occurred while writing to the EVM daemon connection. The
connection is no longer usable, and the caller should invoke
EvmConnDestroy() to destroy it.
ERRORS
None
LIBRARY
EVM Support Library (libevm.so, libevm.a)
FILES
None
SEE ALSO
Routines: EvmConnControl(3), EvmConnCreate(3), EvmConnDestroy(3),
EvmConnRegistrationGet(3), EvmEventCreate(3), EvmEventDestroy(3),
EvmItemSetVa(3)
Files: kevm(7)
Event Management: EVM(5)
Event Connection: EvmConnection(5)
EVM Events: EvmEvent(5)
 |
Index for Section 3 |
|
 |
Alphabetical listing for E |
|
 |
Top of page |
|