NAME
EvmSrvStart(), EvmSrvMessageGet() — event service functions
SYNOPSIS
#include <evm/evm.h>
EvmStatus_t EvmSrvStart(
char *service_name,
char *arg_string,
EvmTransport_t *transport,
EvmConnection_t *connection );
EvmStatus_t EvmSrvMessageGet(
EvmConnection_t connection ,
EvmEvent_t *event,
char **msg,
char **errmsg,
EvmInt32_t *info );
Remarks
EvmSrvMessageGet
is not currently supported for general use.
Library
EVM Support Library
(libevm.so).
Parameters
- service_name
The name for this service.
The name must be a service defined
in the EVM daemon configuration file,
.CR /etc/evmdaemon.conf .
- arg_string
If this operand is not NULL,
it is written to the connection when the service is started.
- transport
Specify the type of connection to be made to the daemon.
Because EVM currently supports only local connection the daemon,
transport
must always be set to NULL.
If this argument is not NULL,
an error occurs.
EVM does not support remote connection.
- connection
For
EvmSrvStart(),
this is the return operand. The calling routine passes this value to
EvmConnDestroy()
when it is done with the connection.
For
EvmSrvMessageGet(),
this is the service connection that is read for a message.
- event
If this operand is not NULL on return, it contains an EVM event
returned by the service.
- msg
If this operand is not NULL on return, it contains a character string
returned by the service.
- errmsg
If this operand is not NULL on return, it contains an error message
character string returned by the service.
- info
If this operand is not NULL on return, it contains numeric information
returned by the service.
DESCRIPTION
The
EvmSrvStart()
routine creates a service connection to the EVM daemon,
requesting that the service identified as
service_name
be started.
If the service is known to the daemon, it is started as a child process of the
daemon, and the connection is transferred to the service process.
If the
arg_string
is not NULL,
the function then appends a newline character to it
and writes it to the connection.
The
EvmSrvMessageGet()
routine reads a single EVM service protocol message
from the service connection identified by connection and returns it to the
caller.
The message may be a procedural protocol message, indicating that
the service has started or terminated, or it may carry data.
Procedural messages are handled by the API function.
Data messages may be any one of the following:
An EVM event returned to the caller in
event
A character string returned to the caller in
msg
An error character string returned to the caller in
errmsg
In each of these cases, the data is returned to the caller only if the
address passed to the function as the corresponding argument is not NULL.
The function returns a non-null value in at most one of these return
arguments, and sets the others to NULL.
If the incoming message does not
include data (for example, if it is a protocol message indicating that the
service is terminating) all three of the arguments are set to NULL.
The message may carry one information item, which is returned if
info
is not NULL.
This value is used in the service termination protocol message to
indicate the exit code of the service process.
Notes
EvmSrvMessageGet
is not currently supported for general use.
RETURN VALUE
- EvmERROR_NONE
If a non-null pointer was supplied as the appropriate
argument,
a received data message is available in one of the three data
return arguments.
- EvmERROR_SERVICE_TERMINATED
The service indicated that it was terminating. If the caller passed a
non-null data argument, the service process's exit code is returned in
the
info
operand.
- EvmERROR_EOF
The service connection was closed by the service before a service
termination message was received. This value is returned if the caller
continues to attempt the call after the service has been terminated.
ERRORS
The value of
errno
is not set.
FILES
/etc/evmdaemon.conf
evmd configuration file
SEE ALSO
Routines
EvmConnDestroy(3).