arm_init_transaction_type() — Defines and initializes an ARM transaction type

Standards

Standards / Extensions C or C++ Dependencies
  both  

Format

#include <sys/_Elmarm4.h>

arm_error_t arm_init_transaction_type(
/* [in]     */  arm_appl_id_t   *application_id,
/* [in]     */  arm_string_t     transaction_name,
/* [in]     */  arm_int32_t      flags,
/* [in]     */  arm_buffer4_t   *buffer4,
/* [in/out] */  arm_appl_id_t   *transaction_type_id
);

General description

Use arm_init_transaction_type() to define a transaction classtype. A transaction type represents a type of transaction that is executed by an application. A transaction type must be defined before transactions of that type can be measured using arm_start_transaction() and arm_stop_transaction().

A transaction type consists of a transaction type name and a list of up to 20 transaction property names. Multiple transaction types with the same transaction type name and different transaction property names are allowed. It is the complete set of names that determines the uniqueness of a transaction type.

It is recommended that transaction types be defined during the application's initialization. eWLM expects transaction types to represent broad categories of work so that ordinarily there will be few of them. Detailed transaction identification should be done using the transaction-level properties.

Transaction types also can be defined as needed, during the application's processing of transactions. The ARM implementation must check whether there is an existing definition of the same type to prevent duplicates. Since this adds further overhead into mainline processing, this approach is not recommended.

Transaction classtype definitions remain valid for the life of the application (i.e. until it calls arm_end_application() or its process terminates).

arm_init_application_type() is the ARM 4.0 equivalent of ARM 2.0's arm_getid function.
application_id
The handle passed to or returned by arm_init_application() for the application associated with this transaction type.
transaction_name
The name used to identify the transaction type. The maximum length is 128 characters including the null string terminator. Classification rules in the eWLM policy can use the transaction type name to categorize transactions into eWLM service classes and report classes.
flags
One flag is defined. ARM_INIT_FLAG_ID_INPUT indicates whether the transaction type id is an input (flag is one) or an output (flag is zero). See the transaction type id parameter below. All other flag bits are reserved and must be zero.
buffer4
A pointer to a buffer that identifies one or more sub-buffers containing additional data. A null value can be specified if no additional data is required.
transaction_type_id
A pointer to a 64-bit handle that identifies the transaction type. The application can define its own handle and pass it as input or it can have eWLM generate a handle and return it. The choice is indicated by the flag ARM_INIT_FLAG_ID_INPUT. The handle must be passed to arm_start_transaction(). The handle is defined only within the caller's process. If eWLM is asked to generate a handle and the transaction type name and the transaction property names (in the user data buffer) match the names passed on a previous arm_init_transaction_type() call, the handle value that is returned will be the same as the previous call.

Returned value

On success, arm_init_application returns ARM_RC_SUCCESS. On failure, the errno and return code are set to indicate the error. See Return code for the list of all possible return codes. On failure, the application_id is set to a dummy value which can be used for later calls to other interfaces. Those interfaces will recognize that the application_id contains a dummy value and return without performing any action.
Error Code
Description
EFAULT
A parameter of this service contained an address that was not accessible to the caller.
EINVAL
A parameter of this service contained a value that was not valid.
EMVSARMERROR
An ARM error occurred. Refer to the return code for the specific error.
EPERM
The caller does not have the appropriate privileges. The return code is set to ARM_RC_AUTH_ERROR.
EMVSSAF2ERR
An error occurred in the security product.

Related information