Get a handle to an entity
#include <ha/ham.h> ham_entity_t *ham_entity_handle( int nd, const char *ename, unsigned flags ); ham_entity_t *ham_entity_handle_node( const char *nodename, const char *ename, unsigned flags );
libham
The ham_entity_handle() function returns a handle to an entity (ename). The handle can then be passed to other functions that expect a handle to an entity (such as ham_condition() or ham_entity_handle_free()).
To get a handle for a global entity, pass NULL for ename. |
The handle returned is opaque — its contents are internal to the library.
If a node (nd) is specified, the handle is to an entity/condition/action combination that refers to a process on that remote node. The ham_entity_handle_node() function is used when a nodename is used to specify a remote HAM instead of a node identifier (nd).
There are no flags defined at this time.
A valid ham_entity_t or NULL if an error occurred (errno is set).
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | No |
Thread | Yes |
A call to ham_entity_handle() and a subsequent use of the handle returned in a call such as ham_condition() are completely asynchronous. Therefore, a valid action/condition/entity may no longer exist when the handle is used at a later time.
In such an event, the ham_condition*() functions will return an error (ENOENT) that the action in the condition doesn't exist in the given entity.
ham_action_handle(), ham_action_handle_free(), ham_condition(), ham_condition_handle(), ham_condition_handle_free(), ham_condition_remove(), ham_entity_handle_free()