/** * The Container Entity has been deprecated and will be removed in the future. Use the RouterEntity instead. */ qd_error_t qd_dispatch_configure_container(qd_dispatch_t *qd, qd_entity_t *entity) { // Add a log warning. Check to see if too early qd->thread_count = qd_entity_opt_long(entity, "workerThreads", 4); QD_ERROR_RET(); qd->sasl_config_path = qd_entity_opt_string(entity, "saslConfigPath", 0); QD_ERROR_RET(); qd->sasl_config_name = qd_entity_opt_string(entity, "saslConfigName", 0); QD_ERROR_RET(); char *dump_file = qd_entity_opt_string(entity, "debugDump", 0); QD_ERROR_RET(); if (dump_file) { qd_alloc_debug_dump(dump_file); QD_ERROR_RET(); free(dump_file); } return QD_ERROR_NONE; }
qd_error_t qd_dispatch_configure_router(qd_dispatch_t *qd, qd_entity_t *entity) { qd_dispatch_set_router_id(qd, qd_entity_opt_string(entity, "routerId", 0)); QD_ERROR_RET(); if (! qd->router_id) { qd_dispatch_set_router_id(qd, qd_entity_opt_string(entity, "id", 0)); QD_ERROR_RET(); } assert(qd->router_id); qd->router_mode = qd_entity_get_long(entity, "mode"); QD_ERROR_RET(); qd->thread_count = qd_entity_opt_long(entity, "workerThreads", 4); QD_ERROR_RET(); if (! qd->sasl_config_path) { qd->sasl_config_path = qd_entity_opt_string(entity, "saslConfigPath", 0); QD_ERROR_RET(); } if (! qd->sasl_config_name) { qd->sasl_config_name = qd_entity_opt_string(entity, "saslConfigName", "qdrouterd"); QD_ERROR_RET(); } char *dump_file = qd_entity_opt_string(entity, "debugDump", 0); QD_ERROR_RET(); if (dump_file) { qd_alloc_debug_dump(dump_file); QD_ERROR_RET(); free(dump_file); } return QD_ERROR_NONE; }
qd_error_t qd_log_entity(qd_entity_t *entity) { qd_error_clear(); char* module = qd_entity_get_string(entity, "module"); QD_ERROR_RET(); sys_mutex_lock(log_source_lock); qd_log_source_t *src = qd_log_source_lh(module); /* The original log source */ free(module); qd_log_source_t copy = *src; /* A copy to modify outside the lock. */ sys_mutex_unlock(log_source_lock); if (qd_entity_has(entity, "enable")) { char *enable = qd_entity_get_string(entity, "enable"); copy.mask = enable_mask(enable); free(enable); } QD_ERROR_RET(); if (qd_entity_has(entity, "timestamp")) copy.timestamp = qd_entity_get_bool(entity, "timestamp"); QD_ERROR_RET(); if (qd_entity_has(entity, "source")) copy.source = qd_entity_get_bool(entity, "source"); QD_ERROR_RET(); if (qd_entity_has(entity, "output")) { log_sink_free_lh(copy.sink); /* DEFAULT source may already have a sink */ char* output = qd_entity_get_string(entity, "output"); QD_ERROR_RET(); copy.sink = log_sink_lh(output); free(output); if (copy.sink->syslog) /* Timestamp off for syslog. */ copy.timestamp = 0; } sys_mutex_lock(log_source_lock); *src = copy; sys_mutex_unlock(log_source_lock); return qd_error_code(); }
static qd_error_t compose_python_message(qd_composed_field_t **field, PyObject *message, qd_dispatch_t* qd) { *field = qd_compose(QD_PERFORMATIVE_PROPERTIES, *field); qd_compose_start_list(*field); qd_compose_insert_null(*field); // message-id qd_compose_insert_null(*field); // user-id qd_py_attr_to_composed(message, "address", *field); QD_ERROR_RET(); // to qd_compose_insert_null(*field); // subject qd_compose_insert_null(*field); // reply-to qd_py_attr_to_composed(message, "correlation_id", *field); QD_ERROR_RET(); // correlation-id qd_compose_end_list(*field); *field = qd_compose(QD_PERFORMATIVE_APPLICATION_PROPERTIES, *field); QD_ERROR_RET(); qd_py_attr_to_composed(message, "properties", *field); QD_ERROR_RET(); *field = qd_compose(QD_PERFORMATIVE_BODY_AMQP_VALUE, *field); QD_ERROR_RET(); qd_py_attr_to_composed(message, "body", *field); QD_ERROR_RET(); return qd_error_code(); }
qd_error_t qd_py_to_composed(PyObject *value, qd_composed_field_t *field) { qd_python_check_lock(); qd_error_clear(); if (value == Py_None) { qd_compose_insert_null(field); } else if (PyBool_Check(value)) { qd_compose_insert_bool(field, PyInt_AS_LONG(value) ? 1 : 0); } else if (PyInt_Check(value)) { qd_compose_insert_long(field, (int64_t) PyInt_AS_LONG(value)); } else if (PyLong_Check(value)) { qd_compose_insert_long(field, (int64_t) PyLong_AsLongLong(value)); } else if (PyString_Check(value) || PyUnicode_Check(value)) { qd_compose_insert_string(field, PyString_AsString(value)); } else if (PyDict_Check(value)) { Py_ssize_t iter = 0; PyObject *key; PyObject *val; qd_compose_start_map(field); while (PyDict_Next(value, &iter, &key, &val)) { qd_py_to_composed(key, field); QD_ERROR_RET(); qd_py_to_composed(val, field); QD_ERROR_RET(); } QD_ERROR_PY_RET(); qd_compose_end_map(field); } else if (PyList_Check(value)) { Py_ssize_t count = PyList_Size(value); if (count == 0) qd_compose_empty_list(field); else { qd_compose_start_list(field); for (Py_ssize_t idx = 0; idx < count; idx++) { PyObject *item = PyList_GetItem(value, idx); QD_ERROR_PY_RET(); qd_py_to_composed(item, field); QD_ERROR_RET(); } qd_compose_end_list(field); } } else if (PyTuple_Check(value)) { Py_ssize_t count = PyTuple_Size(value); if (count == 0) qd_compose_empty_list(field); else { qd_compose_start_list(field); for (Py_ssize_t idx = 0; idx < count; idx++) { PyObject *item = PyTuple_GetItem(value, idx); QD_ERROR_PY_RET(); qd_py_to_composed(item, field); QD_ERROR_RET(); } qd_compose_end_list(field); } } else { PyObject *type=0, *typestr=0, *repr=0; if ((type = PyObject_Type(value)) && (typestr = PyObject_Str(type)) && (repr = PyObject_Repr(value))) qd_error(QD_ERROR_TYPE, "Can't compose object of type %s: %s", PyString_AsString(typestr), PyString_AsString(repr)); else qd_error(QD_ERROR_TYPE, "Can't compose python object of unknown type"); Py_XDECREF(type); Py_XDECREF(typestr); Py_XDECREF(repr); } return qd_error_code(); }