osaf/services/saf/logsv/lgs/lgs_imm.c |  231 ++++++++++++++++++++++++++-------
 1 files changed, 178 insertions(+), 53 deletions(-)


Use CCB error strings instead of LOG_ER

diff --git a/osaf/services/saf/logsv/lgs/lgs_imm.c 
b/osaf/services/saf/logsv/lgs/lgs_imm.c
--- a/osaf/services/saf/logsv/lgs/lgs_imm.c
+++ b/osaf/services/saf/logsv/lgs/lgs_imm.c
@@ -343,12 +343,15 @@ static SaAisErrorT ccbObjectDeleteCallba
 {
        SaAisErrorT rc = SA_AIS_OK;
        struct CcbUtilCcbData *ccbUtilCcbData;
+       char err_str[256];
 
        TRACE_ENTER2("CCB ID %llu, '%s'", ccbId, objectName->value);
 
        if ((ccbUtilCcbData = ccbutil_findCcbData(ccbId)) == NULL) {
                if ((ccbUtilCcbData = ccbutil_getCcbData(ccbId)) == NULL) {
-                       LOG_ER("Failed to get CCB object for %llu", ccbId);
+                       LOG_NO("Failed to get CCB object for %llu", ccbId);
+                       (void) snprintf(err_str, 256, "Failed to get CCB object 
for %llu", ccbId);
+                       (void) saImmOiCcbSetErrorString(immOiHandle, ccbId, 
err_str);
                        rc = SA_AIS_ERR_NO_MEMORY;
                        goto done;
                }
@@ -367,13 +370,16 @@ static SaAisErrorT ccbObjectCreateCallba
 {
        SaAisErrorT rc = SA_AIS_OK;
        struct CcbUtilCcbData *ccbUtilCcbData;
+       char err_str[256];
 
        TRACE_ENTER2("CCB ID %llu, class '%s', parent '%s'",
                        ccbId, className, parentName->value);
 
        if ((ccbUtilCcbData = ccbutil_findCcbData(ccbId)) == NULL) {
                if ((ccbUtilCcbData = ccbutil_getCcbData(ccbId)) == NULL) {
-                       LOG_ER("Failed to get CCB object for %llu", ccbId);
+                       LOG_NO("Failed to get CCB object for %llu", ccbId);
+                       (void) snprintf(err_str, 256, "Failed to get CCB object 
for %llu", ccbId);
+                       (void) saImmOiCcbSetErrorString(immOiHandle, ccbId, 
err_str);
                        rc = SA_AIS_ERR_NO_MEMORY;
                        goto done;
                }
@@ -401,12 +407,15 @@ static SaAisErrorT ccbObjectModifyCallba
 {
        SaAisErrorT rc = SA_AIS_OK;
        struct CcbUtilCcbData *ccbUtilCcbData;
+       char err_str[256];
 
        TRACE_ENTER2("CCB ID %llu, '%s'", ccbId, objectName->value);
 
        if ((ccbUtilCcbData = ccbutil_findCcbData(ccbId)) == NULL) {
                if ((ccbUtilCcbData = ccbutil_getCcbData(ccbId)) == NULL) {
-                       LOG_ER("Failed to get CCB objectfor %llu", ccbId);
+                       LOG_NO("Failed to get CCB object for %llu", ccbId);
+                       (void) snprintf(err_str, 256, "Failed to get CCB object 
for %llu", ccbId);
+                       (void) saImmOiCcbSetErrorString(immOiHandle, ccbId, 
err_str);
                        rc = SA_AIS_ERR_NO_MEMORY;
                        goto done;
                }
@@ -419,21 +428,41 @@ static SaAisErrorT ccbObjectModifyCallba
        return rc;
 }
 
-static SaAisErrorT config_ccb_completed_create(const CcbUtilOperationData_t 
*opdata)
+/**
+ * Creation of log service configuration object. Not allowed
+ * 
+ * @param immOiHandle
+ * @param opdata
+ * @return 
+ */
+static SaAisErrorT config_ccb_completed_create(SaImmOiHandleT immOiHandle,
+               const CcbUtilOperationData_t *opdata)
 {
        SaAisErrorT rc = SA_AIS_ERR_BAD_OPERATION;
 
        TRACE_ENTER2("CCB ID %llu", opdata->ccbId);
-       LOG_NO("Creation of OpenSafLogConfig object is not supported");
+       TRACE("Creation of OpenSafLogConfig object is not allowed");
+       (void) saImmOiCcbSetErrorString(immOiHandle, opdata->ccbId,
+                       "Creation of OpenSafLogConfig object is not allowed");
        TRACE_LEAVE2("%u", rc);
        return rc;
 }
 
-static SaAisErrorT config_ccb_completed_modify(const CcbUtilOperationData_t 
*opdata)
+/**
+ * Modification of attributes in log service configuration object.
+ * Only logRootDirectory can be modified
+ * 
+ * @param immOiHandle
+ * @param opdata
+ * @return 
+ */
+static SaAisErrorT config_ccb_completed_modify(SaImmOiHandleT immOiHandle,
+               const CcbUtilOperationData_t *opdata)
 {
        const SaImmAttrModificationT_2 *attrMod;
        SaAisErrorT rc = SA_AIS_OK;
        int i = 0;
+       char err_str[256];
 
        TRACE_ENTER2("CCB ID %llu, '%s'", opdata->ccbId, 
opdata->objectName.value);
 
@@ -445,8 +474,11 @@ static SaAisErrorT config_ccb_completed_
                TRACE("attribute %s", attribute->attrName);
 
                if (attribute->attrValuesNumber == 0) {
-                       LOG_NO("deletion of value is not allowed for attribute 
%s stream %s",
+                       (void) snprintf(err_str, 256,
+                                       "deletion of value is not allowed for 
attribute %s stream %s",
                                        attribute->attrName, 
opdata->objectName.value);
+                       TRACE("%s", err_str);
+                       (void) saImmOiCcbSetErrorString(immOiHandle, 
opdata->ccbId,     err_str);
                        rc = SA_AIS_ERR_BAD_OPERATION;
                        goto done;
                }
@@ -456,45 +488,65 @@ static SaAisErrorT config_ccb_completed_
                if (!strcmp(attribute->attrName, "logRootDirectory")) {
                        char *pathName = *((char **)value);
                        if (!path_is_writeable_dir_h(pathName)) {
-                               LOG_NO("pathName: %s is NOT accepted", 
pathName);
+                               (void) snprintf(err_str,256,"pathName: %s is 
NOT accepted", pathName);
+                               TRACE("%s", err_str);
+                               (void) saImmOiCcbSetErrorString(immOiHandle, 
opdata->ccbId,     err_str);
                                rc = SA_AIS_ERR_BAD_OPERATION;
                                goto done;
                        }
                        TRACE("pathName: %s is accepted", pathName);
                } else if (!strcmp(attribute->attrName, "logMaxLogrecsize")) {
-                       LOG_NO("%s cannot be changed", attribute->attrName);
+                       (void) snprintf(err_str, 256, "%s cannot be changed", 
attribute->attrName);
+                       TRACE("%s", err_str);
+                       (void) saImmOiCcbSetErrorString(immOiHandle, 
opdata->ccbId,     err_str);
                        rc = SA_AIS_ERR_FAILED_OPERATION;
                        goto done;
                } else if (!strcmp(attribute->attrName, 
"logStreamSystemHighLimit")) {
-                       LOG_NO("%s cannot be changed", attribute->attrName);
+                       (void) snprintf(err_str, 256, "%s cannot be changed", 
attribute->attrName);
+                       TRACE("%s", err_str);
+                       (void) saImmOiCcbSetErrorString(immOiHandle, 
opdata->ccbId,     err_str);
                        rc = SA_AIS_ERR_FAILED_OPERATION;
                        goto done;
                } else if (!strcmp(attribute->attrName, 
"logStreamSystemLowLimit")) {
-                       LOG_NO("%s cannot be changed", attribute->attrName);
+                       (void) snprintf(err_str, 256, "%s cannot be changed", 
attribute->attrName);
+                       TRACE("%s", err_str);
+                       (void) saImmOiCcbSetErrorString(immOiHandle, 
opdata->ccbId,     err_str);
                        rc = SA_AIS_ERR_FAILED_OPERATION;
                        goto done;
                } else if (!strcmp(attribute->attrName, 
"logStreamAppHighLimit")) {
-                       LOG_NO("%s cannot be changed", attribute->attrName);
+                       (void) snprintf(err_str, 256, "%s cannot be changed", 
attribute->attrName);
+                       TRACE("%s", err_str);
+                       (void) saImmOiCcbSetErrorString(immOiHandle, 
opdata->ccbId,     err_str);
                        rc = SA_AIS_ERR_FAILED_OPERATION;
                        goto done;
                } else if (!strcmp(attribute->attrName, 
"logStreamAppLowLimit")) {
-                       LOG_NO("%s cannot be changed", attribute->attrName);
+                       (void) snprintf(err_str, 256, "%s cannot be changed", 
attribute->attrName);
+                       TRACE("%s", err_str);
+                       (void) saImmOiCcbSetErrorString(immOiHandle, 
opdata->ccbId,     err_str);
                        rc = SA_AIS_ERR_FAILED_OPERATION;
                        goto done;
                } else if (!strcmp(attribute->attrName, 
"logMaxApplicationStreams")) {
-                       LOG_NO("%s cannot be changed", attribute->attrName);
+                       (void) snprintf(err_str, 256, "%s cannot be changed", 
attribute->attrName);
+                       TRACE("%s", err_str);
+                       (void) saImmOiCcbSetErrorString(immOiHandle, 
opdata->ccbId,     err_str);
                        rc = SA_AIS_ERR_FAILED_OPERATION;
                        goto done;
                } else if (!strcmp(attribute->attrName, "logFileIoTimeout")) {
-                       LOG_NO("%s cannot be changed", attribute->attrName);
+                       (void) snprintf(err_str, 256, "%s cannot be changed", 
attribute->attrName);
+                       TRACE("%s", err_str);
+                       (void) saImmOiCcbSetErrorString(immOiHandle, 
opdata->ccbId,     err_str);
                        rc = SA_AIS_ERR_FAILED_OPERATION;
                        goto done;
                } else if (!strcmp(attribute->attrName, 
"logFileHdlRecoveryTimeoutS")) {
-                       LOG_NO("%s cannot be changed", attribute->attrName);
+                       (void) snprintf(err_str, 256, "%s cannot be changed", 
attribute->attrName);
+                       TRACE("%s", err_str);
+                       (void) saImmOiCcbSetErrorString(immOiHandle, 
opdata->ccbId,     err_str);
                        rc = SA_AIS_ERR_FAILED_OPERATION;
                        goto done;
                } else {
-                       LOG_NO("attribute %s not recognized", 
attribute->attrName);
+                       (void) snprintf(err_str, 256, "attribute %s not 
recognized", attribute->attrName);
+                       TRACE("%s", err_str);
+                       (void) saImmOiCcbSetErrorString(immOiHandle, 
opdata->ccbId,     err_str);
                        rc = SA_AIS_ERR_FAILED_OPERATION;
                        goto done;
                }
@@ -507,17 +559,28 @@ done:
        return rc;
 }
 
-static SaAisErrorT config_ccb_completed_delete(const CcbUtilOperationData_t 
*opdata)
+/**
+ * Delete log service configuration object. Not allowed
+ * 
+ * @param immOiHandle
+ * @param opdata
+ * @return 
+ */
+static SaAisErrorT config_ccb_completed_delete(SaImmOiHandleT immOiHandle,
+               const CcbUtilOperationData_t *opdata)
 {
        SaAisErrorT rc = SA_AIS_ERR_BAD_OPERATION;
 
        TRACE_ENTER2("CCB ID %llu", opdata->ccbId);
-       LOG_NO("Deletion of OpenSafLogConfig object is not supported");
+       TRACE("Deletion of OpenSafLogConfig object is not allowed");
+       (void) saImmOiCcbSetErrorString(immOiHandle, opdata->ccbId,
+                       "Deletion of OpenSafLogConfig object is not allowed");
        TRACE_LEAVE2("%u", rc);
        return rc;
 }
 
-static SaAisErrorT config_ccb_completed(const CcbUtilOperationData_t *opdata)
+static SaAisErrorT config_ccb_completed(SaImmOiHandleT immOiHandle,
+               const CcbUtilOperationData_t *opdata)
 {
        SaAisErrorT rc = SA_AIS_ERR_BAD_OPERATION;
 
@@ -525,13 +588,13 @@ static SaAisErrorT config_ccb_completed(
 
        switch (opdata->operationType) {
        case CCBUTIL_CREATE:
-               rc = config_ccb_completed_create(opdata);
+               rc = config_ccb_completed_create(immOiHandle, opdata);
                break;
        case CCBUTIL_MODIFY:
-               rc = config_ccb_completed_modify(opdata);
+               rc = config_ccb_completed_modify(immOiHandle, opdata);
                break;
        case CCBUTIL_DELETE:
-               rc = config_ccb_completed_delete(opdata);
+               rc = config_ccb_completed_delete(immOiHandle, opdata);
                break;
        default:
                assert(0);
@@ -548,7 +611,8 @@ static SaAisErrorT config_ccb_completed(
  *
  * @return SaAisErrorT
  */
-static SaAisErrorT check_attr_validity(const struct CcbUtilOperationData 
*opdata)
+static SaAisErrorT check_attr_validity(SaImmOiHandleT immOiHandle,
+               const struct CcbUtilOperationData *opdata)
 {
        SaAisErrorT rc = SA_AIS_OK;
        void *value;
@@ -556,6 +620,7 @@ static SaAisErrorT check_attr_validity(c
        const SaImmAttrValuesT_2 *attribute;
        log_stream_t *stream = (opdata->operationType == CCBUTIL_CREATE) ? NULL
                        : log_stream_get_by_name((char *) 
opdata->param.modify.objectName->value);
+       char err_str[256];
 
        TRACE_ENTER();
 
@@ -579,7 +644,10 @@ static SaAisErrorT check_attr_validity(c
                        if (!strcmp(attribute->attrName, 
"saLogStreamFileName")) {
                                char *fileName = *((char **) value);
                                if (lgs_check_path_exists_h(fileName) == 0) {
-                                       LOG_ER("File %s already exist", 
fileName);
+                                       (void) snprintf(err_str, 256,
+                                                       "File %s already 
exist", fileName);
+                                       TRACE("%s", err_str);
+                                       (void) 
saImmOiCcbSetErrorString(immOiHandle, opdata->ccbId,     err_str);
                                        rc = SA_AIS_ERR_EXIST;
                                }
                                TRACE("fileName: %s", fileName);
@@ -589,13 +657,21 @@ static SaAisErrorT check_attr_validity(c
                                                lgs_cb->logsv_root_dir,
                                                *((char **) value));
                                if (n >= PATH_MAX) {
-                                       LOG_ER("Path > PATH_MAX");
+                                       TRACE("Path > PATH_MAX");
+                                       (void) 
saImmOiCcbSetErrorString(immOiHandle, opdata->ccbId,
+                                                       "Path > PATH_MAX");
                                        rc = SA_AIS_ERR_BAD_OPERATION;
                                } else if 
(lgs_relative_path_check_ts(fileName)) {
-                                       LOG_ER("Path %s not valid", fileName);
+                                       (void) snprintf(err_str, 256,
+                                                       "Path %s not valid", 
fileName);
+                                       TRACE("%s", err_str);
+                                       (void) 
saImmOiCcbSetErrorString(immOiHandle, opdata->ccbId,     err_str);
                                        rc = SA_AIS_ERR_INVALID_PARAM;
                                } else if 
(lgs_check_path_exists_h(lgs_cb->logsv_root_dir) != 0) {
-                                       LOG_ER("Path %s does not exist", 
fileName);
+                                       (void) snprintf(err_str, 256,
+                                                       "Path %s does not 
exist", fileName);
+                                       TRACE("%s", err_str);
+                                       (void) 
saImmOiCcbSetErrorString(immOiHandle, opdata->ccbId,     err_str);
                                        rc = SA_AIS_ERR_BAD_OPERATION;
                                }
                                TRACE("fileName: %s", fileName);
@@ -605,7 +681,9 @@ static SaAisErrorT check_attr_validity(c
                                if (maxLogFileSize > 0 &&
                                                stream != NULL &&
                                                maxLogFileSize < 
stream->fixedLogRecordSize) {
-                                       LOG_ER("maxLogFileSize out of range");
+                                       TRACE("maxLogFileSize out of range");
+                                       (void) 
saImmOiCcbSetErrorString(immOiHandle, opdata->ccbId,
+                                                       "maxLogFileSize out of 
range");
                                        rc = SA_AIS_ERR_BAD_OPERATION;
                                }
                                TRACE("maxLogFileSize: %llu", maxLogFileSize);
@@ -614,7 +692,9 @@ static SaAisErrorT check_attr_validity(c
                                if (stream != NULL &&
                                                stream->maxLogFileSize > 0 &&
                                                fixedLogRecordSize > 
stream->maxLogFileSize) {
-                                       LOG_ER("fixedLogRecordSize out of 
range");
+                                       TRACE("fixedLogRecordSize out of 
range");
+                                       (void) 
saImmOiCcbSetErrorString(immOiHandle, opdata->ccbId,
+                                                       "fixedLogRecordSize out 
of range");
                                        rc = SA_AIS_ERR_BAD_OPERATION;
                                }
                                TRACE("fixedLogRecordSize: %u", 
fixedLogRecordSize);
@@ -622,26 +702,35 @@ static SaAisErrorT check_attr_validity(c
                                SaLogFileFullActionT logFullAction = 
*((SaUint32T *) value);
                                if ((logFullAction < 
SA_LOG_FILE_FULL_ACTION_WRAP) ||
                                                (logFullAction > 
SA_LOG_FILE_FULL_ACTION_ROTATE)) {
-                                       LOG_ER("logFullAction out of range");
+                                       TRACE("logFullAction out of range");
+                                       (void) 
saImmOiCcbSetErrorString(immOiHandle, opdata->ccbId,
+                                                       "logFullAction out of 
range");
                                        rc = SA_AIS_ERR_BAD_OPERATION;
                                }
                                if ((logFullAction == 
SA_LOG_FILE_FULL_ACTION_WRAP) ||
                                                (logFullAction == 
SA_LOG_FILE_FULL_ACTION_HALT)) {
-                                       LOG_ER("logFullAction:Current 
Implementation doesn't support  Wrap and halt");
+                                       TRACE("logFullAction:Current 
Implementation doesn't support Wrap and halt");
+                                       (void) 
saImmOiCcbSetErrorString(immOiHandle, opdata->ccbId,
+                                                       "logFullAction:Current 
Implementation doesn't support Wrap and halt");
                                        rc = SA_AIS_ERR_NOT_SUPPORTED;
                                }
                                TRACE("logFullAction: %u", logFullAction);
                        } else if (!strcmp(attribute->attrName, 
"saLogStreamLogFullHaltThreshold")) {
                                SaUint32T logFullHaltThreshold = *((SaUint32T 
*) value);
                                if (logFullHaltThreshold >= 100) {
-                                       LOG_ER("logFullHaltThreshold out of 
range");
+                                       TRACE("logFullHaltThreshold out of 
range");
+                                       (void) 
saImmOiCcbSetErrorString(immOiHandle, opdata->ccbId,
+                                                       "logFullHaltThreshold 
out of range");
                                        rc = SA_AIS_ERR_BAD_OPERATION;
                                }
                                TRACE("logFullHaltThreshold: %u", 
logFullHaltThreshold);
                        } else if (!strcmp(attribute->attrName, 
"saLogStreamMaxFilesRotated")) {
                                SaUint32T maxFilesRotated = *((SaUint32T *) 
value);
                                if (maxFilesRotated < 1 || maxFilesRotated > 
128) {
-                                       LOG_ER("Unreasonable maxFilesRotated: 
%x", maxFilesRotated);
+                                       (void) snprintf(err_str, 256,
+                                                       "Unreasonable 
maxFilesRotated: %x", maxFilesRotated);
+                                       TRACE("%s", err_str);
+                                       (void) 
saImmOiCcbSetErrorString(immOiHandle, opdata->ccbId,     err_str);
                                        rc = SA_AIS_ERR_BAD_OPERATION;
                                }
                                TRACE("maxFilesRotated: %u", maxFilesRotated);
@@ -652,7 +741,10 @@ static SaAisErrorT check_attr_validity(c
 
                                if (opdata->operationType == CCBUTIL_CREATE) {
                                        if 
(!lgs_is_valid_format_expression(logFileFormat, STREAM_TYPE_APPLICATION, 
&dummy)) {
-                                               LOG_ER("Invalid logFileFormat: 
%s", logFileFormat);
+                                               (void) snprintf(err_str, 256,
+                                                               "Invalid 
logFileFormat: %s", logFileFormat);
+                                               TRACE("%s", err_str);
+                                               (void) 
saImmOiCcbSetErrorString(immOiHandle, opdata->ccbId,     err_str);
                                                rc = SA_AIS_ERR_BAD_OPERATION;
                                        }
                                }
@@ -665,7 +757,10 @@ static SaAisErrorT check_attr_validity(c
                        } else if (!strcmp(attribute->attrName, 
"saLogStreamSeverityFilter")) {
                                SaUint32T severityFilter = *((SaUint32T *) 
value);
                                if (severityFilter > 0x7f) {
-                                       LOG_ER("Invalid severity: %x", 
severityFilter);
+                                       (void) snprintf(err_str, 256,
+                                                       "Invalid severity: %x", 
severityFilter);
+                                       TRACE("%s", err_str);
+                                       (void) 
saImmOiCcbSetErrorString(immOiHandle, opdata->ccbId,     err_str);
                                        rc = SA_AIS_ERR_BAD_OPERATION;
                                }
                                TRACE("severityFilter: %u", severityFilter);
@@ -673,7 +768,10 @@ static SaAisErrorT check_attr_validity(c
                                        !strncmp(attribute->attrName, "safLg", 
5)) {
                                ;
                        } else {
-                               LOG_ER("invalid attribute %s", 
attribute->attrName);
+                               (void) snprintf(err_str, 256,
+                                               "invalid attribute %s", 
attribute->attrName);
+                               TRACE("%s", err_str);
+                               (void) saImmOiCcbSetErrorString(immOiHandle, 
opdata->ccbId,     err_str);
                                rc = SA_AIS_ERR_BAD_OPERATION;
                        }
                } else {
@@ -689,29 +787,47 @@ static SaAisErrorT check_attr_validity(c
        return rc;
 }
 
-static SaAisErrorT stream_ccb_completed_create(const CcbUtilOperationData_t 
*opdata)
+/**
+ * Create a log stream configuration object
+ * @param immOiHandle
+ * @param opdata
+ * @return 
+ */
+static SaAisErrorT stream_ccb_completed_create(SaImmOiHandleT immOiHandle, 
const CcbUtilOperationData_t *opdata)
 {
        SaAisErrorT rc = SA_AIS_ERR_BAD_OPERATION;
 
        TRACE_ENTER2("CCB ID %llu", opdata->ccbId);
-       rc = check_attr_validity(opdata);
+       rc = check_attr_validity(immOiHandle, opdata);
        TRACE_LEAVE2("%u", rc);
        return rc;
 }
 
-static SaAisErrorT stream_ccb_completed_modify(const CcbUtilOperationData_t 
*opdata)
+/**
+ * Modify attributes in log stream configuration object
+ * @param opdata
+ * @return 
+ */
+static SaAisErrorT stream_ccb_completed_modify(SaImmOiHandleT immOiHandle, 
const CcbUtilOperationData_t *opdata)
 {
        SaAisErrorT rc;
 
        TRACE_ENTER2("CCB ID %llu, '%s'", opdata->ccbId, 
opdata->objectName.value);
-       rc = check_attr_validity(opdata);
+       rc = check_attr_validity(immOiHandle, opdata);
        TRACE_LEAVE2("rc = %u", rc);
        return rc;
 }
 
-static SaAisErrorT stream_ccb_completed_delete(const CcbUtilOperationData_t 
*opdata)
+/**
+ * Delete log stream configuration object
+ * @param immOiHandle
+ * @param opdata
+ * @return 
+ */
+static SaAisErrorT stream_ccb_completed_delete(SaImmOiHandleT immOiHandle, 
const CcbUtilOperationData_t *opdata)
 {
        SaAisErrorT rc = SA_AIS_ERR_BAD_OPERATION;
+       char err_str[256];
 
        TRACE_ENTER2("CCB ID %llu, '%s'", opdata->ccbId, 
opdata->objectName.value);
 
@@ -720,18 +836,27 @@ static SaAisErrorT stream_ccb_completed_
 
        if (stream != NULL) {
                if (stream->streamId < 3) {
-                       LOG_ER("Stream delete: well known stream '%s' cannot be 
deleted", name);
+                       (void) snprintf(err_str, 256,
+                                       "Stream delete: well known stream '%s' 
cannot be deleted", name);
+                       TRACE("%s", err_str);
+                       (void) saImmOiCcbSetErrorString(immOiHandle, 
opdata->ccbId,     err_str);
                        goto done;
                }
 
                if (stream->numOpeners > 1) {
-                       LOG_ER("Stream '%s' cannot be deleted: opened by %u 
clients", name, stream->numOpeners);
+                       (void) snprintf(err_str, 256,
+                                       "Stream '%s' cannot be deleted: opened 
by %u clients", name,
+                                       stream->numOpeners);
+                       TRACE("%s", err_str);
+                       (void) saImmOiCcbSetErrorString(immOiHandle, 
opdata->ccbId,     err_str);
                        goto done;
                }
 
                rc = SA_AIS_OK;
        } else {
-               LOG_ER("stream %s not found", name);
+               (void) snprintf(err_str, 256, "stream %s not found", name);
+               TRACE("%s", err_str);
+               (void) saImmOiCcbSetErrorString(immOiHandle, opdata->ccbId,     
err_str);
        }
 
 done:
@@ -739,7 +864,7 @@ done:
        return rc;
 }
 
-static SaAisErrorT stream_ccb_completed(const CcbUtilOperationData_t *opdata)
+static SaAisErrorT stream_ccb_completed(SaImmOiHandleT immOiHandle, const 
CcbUtilOperationData_t *opdata)
 {
        SaAisErrorT rc = SA_AIS_ERR_BAD_OPERATION;
 
@@ -747,13 +872,13 @@ static SaAisErrorT stream_ccb_completed(
 
        switch (opdata->operationType) {
        case CCBUTIL_CREATE:
-               rc = stream_ccb_completed_create(opdata);
+               rc = stream_ccb_completed_create(immOiHandle, opdata);
                break;
        case CCBUTIL_MODIFY:
-               rc = stream_ccb_completed_modify(opdata);
+               rc = stream_ccb_completed_modify(immOiHandle, opdata);
                break;
        case CCBUTIL_DELETE:
-               rc = stream_ccb_completed_delete(opdata);
+               rc = stream_ccb_completed_delete(immOiHandle, opdata);
                break;
        default:
                assert(0);
@@ -800,18 +925,18 @@ static SaAisErrorT ccbCompletedCallback(
                switch (opdata->operationType) {
                case CCBUTIL_CREATE:
                        if (!strcmp(opdata->param.create.className, 
"OpenSafLogConfig"))
-                               rc = config_ccb_completed(opdata);
+                               rc = config_ccb_completed(immOiHandle, opdata);
                        else if (!strcmp(opdata->param.create.className, 
"SaLogStreamConfig"))
-                               rc = stream_ccb_completed(opdata);
+                               rc = stream_ccb_completed(immOiHandle, opdata);
                        else
                                osafassert(0);
                        break;
                case CCBUTIL_DELETE:
                case CCBUTIL_MODIFY:
                        if (!strncmp((char*)opdata->objectName.value, 
"safLgStrCfg", 11)) {
-                               rc = stream_ccb_completed(opdata);
+                               rc = stream_ccb_completed(immOiHandle, opdata);
                        } else {
-                               rc = config_ccb_completed(opdata);
+                               rc = config_ccb_completed(immOiHandle, opdata);
                        }
                        break;
                default:

------------------------------------------------------------------------------
October Webinars: Code for Performance
Free Intel webinars can help you accelerate application performance.
Explore tips for MPI, OpenMP, advanced profiling, and more. Get the most from 
the latest Intel processors and coprocessors. See abstracts and register >
http://pubads.g.doubleclick.net/gampad/clk?id=60134071&iu=/4140/ostg.clktrk
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to