class cmpi

Public Instance Methods

_clr_raised() click to toggle source
static void _clr_raised()
{
    pthread_once(&_once, _init_key);
    pthread_setspecific(_key, NULL);
}
_get_raised() click to toggle source
static void* _get_raised()
{
    pthread_once(&_once, _init_key);
    return pthread_getspecific(_key);
}
_init_key() click to toggle source
static void _init_key()
{
    pthread_key_create(&_key, NULL);
}
_raise_ex(p1) click to toggle source
static void _raise_ex(const CMPIStatus* st)
{
    char* msg = NULL;
    if (st->msg) {
      msg = strdup(CMGetCharsPtr(st->msg, NULL));
    }
#ifdef SWIGPYTHON
    PyObject* obj;
    CMPIException* ex;
    
    ex = (CMPIException*)malloc(sizeof(CMPIException));
    ex->error_code = st->rc;
    ex->description = msg;

    SWIG_PYTHON_THREAD_BEGIN_BLOCK;
    obj = SWIG_NewPointerObj(ex, SWIGTYPE_p__CMPIException, SWIG_POINTER_OWN);
    PyErr_SetObject(SWIG_Python_ExceptionType(SWIGTYPE_p__CMPIException), obj);
    SWIG_PYTHON_THREAD_END_BLOCK;
    _set_raised();
    if (msg)
      free(msg);
#endif

#ifdef SWIGRUBY
    VALUE exception_klass = rb_funcall(mCmpi, rb_intern("rc_to_exception"), 1, Target_Int(st->rc));
    VALUE exception;
    if (NIL_P(exception_klass)) {
      /* no error */
      return;
    }
    exception = rb_funcall(exception_klass, rb_intern("new"), 2, Target_Int(st->rc), Target_String(msg ? msg : ""));
    if (msg)
      free(msg);
    rb_exc_raise(exception);
#endif

#if !defined(SWIGPYTHON) && !defined(SWIGRUBY)
    /* default implementation */
    if (msg == NULL) {
      msg = (char *)malloc(16);
      snprintf(msg, 15, "Cmpi rc %d", st->rc);
    }
    SWIG_exception(SWIG_RuntimeError, msg);
    if (msg)
      free(msg);
#endif
#if !defined (SWIGRUBY)
fail:
#endif
    return;
}
_set_raised() click to toggle source
static void _set_raised()
{
    pthread_once(&_once, _init_key);
    pthread_setspecific(_key, (void*)1);
}
if(p1) click to toggle source
  else if (dp->state & (unsigned short)CMPI_badValue) {
    SWIG_exception(SWIG_ValueError, "bad value");
  }
  else if (dp->type & CMPI_ARRAY) {
    int size = CMGetArrayCount(dp->value.array, NULL);
    int i;
    result = Target_SizedArray(size);
    for (i = 0; i < size; ++i) {
      CMPIData data = CMGetArrayElementAt(dp->value.array, i, NULL);
      Target_Type value = data_value(&data);
      Target_ListSet(result, i, value);
    }
  }
  else {
    result = value_value(&(dp->value), dp->type);
  }
#if !defined (SWIGRUBY)
fail:
#endif
  return result;
}
log_message(p1, p2, p3, p4) click to toggle source

Called by LogMessage and TraceMessage

static void log_message(
    const CMPIBroker *broker,
    int severity, 
    const char *id, 
    const char *text) 
{
  CMPIStatus st = CMLogMessage(broker, severity, id, text, NULL);
  if (st.rc == CMPI_RC_ERR_NOT_SUPPORTED) {
    int priority = LOG_DAEMON;
    openlog("cmpi-bindings", LOG_CONS|LOG_PID, LOG_DAEMON);
    switch(severity) {
      case CMPI_SEV_ERROR:   priority |= LOG_ERR; break;
      case CMPI_SEV_INFO:    priority |= LOG_INFO; break;
      case CMPI_SEV_WARNING: priority |= LOG_WARNING; break;
      case CMPI_DEV_DEBUG:   priority |= LOG_DEBUG; break;
      default:               priority |= LOG_NOTICE;
    }
    syslog(priority, "%s: %s", id, text);
  }
  else {
    RAISE_IF(st);
  }
}