osaf/libs/agents/saf/imma/imma_cb.h | 1 +
osaf/libs/agents/saf/imma/imma_oi_api.c | 22 +++++++++++++++++++++-
2 files changed, 22 insertions(+), 1 deletions(-)
IMMA uses IMMA_OI_CALLBACK_TIMEOUT for sending OI timeout to IMM service using
implementer set operations.
diff --git a/osaf/libs/agents/saf/imma/imma_cb.h
b/osaf/libs/agents/saf/imma/imma_cb.h
--- a/osaf/libs/agents/saf/imma/imma_cb.h
+++ b/osaf/libs/agents/saf/imma/imma_cb.h
@@ -71,6 +71,7 @@ typedef struct imma_client_node {
* enviroment variable IMMA_MAX_OPEN_SEARCHES_PER_HANDLE */
uint32_t maxSearchHandles;
uint32_t searchHandleSize; /* Number of open search handles */
+ uint32_t oiTimeout; /* Timeout for OI callback. If the value is 0,
the default timeout (6s) will be used */
} IMMA_CLIENT_NODE;
/* Node to store adminOwner info */
diff --git a/osaf/libs/agents/saf/imma/imma_oi_api.c
b/osaf/libs/agents/saf/imma/imma_oi_api.c
--- a/osaf/libs/agents/saf/imma/imma_oi_api.c
+++ b/osaf/libs/agents/saf/imma/imma_oi_api.c
@@ -139,6 +139,20 @@ SaAisErrorT saImmOiInitialize_2(SaImmOiH
cl_node->syncr_timeout = IMMSV_WAIT_TIME; /* Default */
}
+ if(cl_node->isImmA2e && (timeout_env_value =
getenv("IMMA_OI_CALLBACK_TIMEOUT"))!=NULL) {
+ char *endp = NULL;
+ cl_node->oiTimeout = strtol(timeout_env_value, &endp, 10);
+ if(!endp || *endp) {
+ TRACE_2("Failed to parse IMMA_OI_CALLBACK_TIMEOUT. "
+ "OI timeout will be set to the default
value");
+ cl_node->oiTimeout = 0;
+ } else {
+ TRACE_2("IMMA library OI timeout set to:%u",
cl_node->oiTimeout);
+ }
+ } else {
+ cl_node->oiTimeout = 0;
+ }
+
/* Take the CB Lock */
if (m_NCS_LOCK(&cb->cb_lock, NCS_LOCK_WRITE) != NCSCC_RC_SUCCESS) {
TRACE_4("ERR_LIBRARY: LOCK failed");
@@ -1270,11 +1284,17 @@ SaAisErrorT saImmOiImplementerSet(SaImmO
/* Populate & Send the Open Event to IMMND */
memset(&evt, 0, sizeof(IMMSV_EVT));
evt.type = IMMSV_EVT_TYPE_IMMND;
- evt.info.immnd.type = IMMND_EVT_A2ND_OI_IMPL_SET;
evt.info.immnd.info.implSet.client_hdl = immOiHandle;
evt.info.immnd.info.implSet.impl_name.size = nameLen;
evt.info.immnd.info.implSet.impl_name.buf = implementerName;
+ if(cl_node->isImmA2e && cl_node->oiTimeout) {
+ evt.info.immnd.info.implSet.oi_timeout = cl_node->oiTimeout;
+ evt.info.immnd.type = IMMND_EVT_A2ND_OI_IMPL_SET_2;
+ } else {
+ evt.info.immnd.type = IMMND_EVT_A2ND_OI_IMPL_SET;
+ }
+
/* Unlock before MDS Send */
m_NCS_UNLOCK(&cb->cb_lock, NCS_LOCK_WRITE);
locked = false;
------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/NeoTech
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel