/** Get the list of interface options that are available for the given interface */ static PyObject * BGPStream_get_data_interface_options(BGPStreamObject *self, PyObject *args) { const char *name; if (!PyArg_ParseTuple(args, "s", &name)) { return NULL; } int id; if((id = bgpstream_get_data_interface_id_by_name(self->bs, name)) == 0) { return PyErr_Format(PyExc_ValueError, "Invalid data interface: %s", name); } int opt_cnt = 0; bgpstream_data_interface_option_t *options; opt_cnt = bgpstream_get_data_interface_options(self->bs, id, &options); /* create the list */ PyObject *list; if((list = PyList_New(0)) == NULL) return NULL; int i; PyObject *dict; for(i=0; i<opt_cnt; i++) { /* create the dictionary */ if((dict = PyDict_New()) == NULL) return NULL; /* name */ ADD_TO_DICT("name", PyString_FromString(options[i].name)); /* description */ ADD_TO_DICT("description", PyString_FromString(options[i].description)); /* add dict to list */ if(PyList_Append(list, dict) == -1) return NULL; Py_DECREF(dict); } return list; }
/** Get information about available data interfaces */ static PyObject * BGPStream_get_data_interfaces(BGPStreamObject *self) { PyObject *list; PyObject *dict; int id_cnt = 0; bgpstream_data_interface_id_t *ids = NULL; int i; bgpstream_data_interface_info_t *info = NULL; id_cnt = bgpstream_get_data_interfaces(self->bs, &ids); /* create the list */ if((list = PyList_New(0)) == NULL) return NULL; for(i=0; i<id_cnt; i++) { /* create the dictionary */ if((dict = PyDict_New()) == NULL) return NULL; info = bgpstream_get_data_interface_info(self->bs, ids[i]); /* add info to dict */ /* id */ ADD_TO_DICT("id", PyInt_FromLong(ids[i])); /* name */ ADD_TO_DICT("name", PyString_FromString(info->name)); /* description */ ADD_TO_DICT("description", PyString_FromString(info->description)); /* add dict to list */ if(PyList_Append(list, dict) == -1) return NULL; Py_DECREF(dict); } return list; }
void populateMessageFromDictionary (mamaDictionaryImpl* impl, mamaMsg msg) { int i = 0; mama_status status = MAMA_STATUS_OK; const mama_bool_t bool_vector[] = {0}; const char char_vector[] = {' '}; const mama_i8_t i8_vector[] = {1}; const mama_u8_t u8_vector[] = {1}; const mama_i16_t i16_vector[] = {1}; const mama_u16_t u16_vector[] = {1}; const mama_i32_t i32_vector[] = {1}; const mama_u32_t u32_vector[] = {1}; const mama_i64_t i64_vector[] = {1}; const mama_u64_t u64_vector[] = {1}; const mama_f32_t f32_vector[] = {1.0f}; const mama_f64_t f64_vector[] = {1.0}; const char* string_vector[] = {" "}; mamaMsg msgArray[1]; mamaMsg tempMsg = NULL; mamaPrice price_vector[1]; mamaPrice price = NULL; mamaDateTime dateTime_vector[1]; mamaDateTime dateTime = NULL; mamaMsg_create (&tempMsg); mamaMsg_addI32 (tempMsg, NULL, 1, 0); msgArray[0] = tempMsg; mamaPrice_create (&price); mamaPrice_setValue (price,123.45); price_vector[0] = price; mamaDateTime_create (&dateTime); mamaDateTime_setToNow (dateTime); dateTime_vector[0] = dateTime; for (i=0;i<impl->mDictSize;i++) { if (impl->mDict[i]) { mamaFieldDescriptor fd = impl->mDict[i]; mama_fid_t fid = mamaFieldDescriptor_getFid (fd); const char* name = mamaFieldDescriptor_getName (fd); mamaFieldType type = mamaFieldDescriptor_getType (fd); switch (type) { case MAMA_FIELD_TYPE_MSG: ADD_TO_DICT (Msg, tempMsg); break; case MAMA_FIELD_TYPE_OPAQUE: mamaMsg_addOpaque (msg, name, fid, (void*)" ", 2); break; case MAMA_FIELD_TYPE_STRING: ADD_TO_DICT (String, ""); break; case MAMA_FIELD_TYPE_BOOL: ADD_TO_DICT (Bool, 0); break; case MAMA_FIELD_TYPE_CHAR: ADD_TO_DICT (Char, ' '); break; case MAMA_FIELD_TYPE_I8: ADD_TO_DICT (I8, 0); break; case MAMA_FIELD_TYPE_U8: ADD_TO_DICT (U8, 0); break; case MAMA_FIELD_TYPE_I16: ADD_TO_DICT (I16, 0); break; case MAMA_FIELD_TYPE_U16: ADD_TO_DICT (U16, 0); break; case MAMA_FIELD_TYPE_I32: ADD_TO_DICT (I32, 0); break; case MAMA_FIELD_TYPE_U32: ADD_TO_DICT (U32, 0); break; case MAMA_FIELD_TYPE_I64: ADD_TO_DICT (I64, 0); break; case MAMA_FIELD_TYPE_U64: ADD_TO_DICT (U64, 0); break; case MAMA_FIELD_TYPE_F32: ADD_TO_DICT (F32, 0.0f); break; case MAMA_FIELD_TYPE_F64: ADD_TO_DICT (F64, 0.0); break; case MAMA_FIELD_TYPE_TIME: ADD_TO_DICT (DateTime, dateTime); break; case MAMA_FIELD_TYPE_PRICE: ADD_TO_DICT (Price, price); break; case MAMA_FIELD_TYPE_VECTOR_BOOL: ADD_VECTOR_TO_DICT (Bool, bool_vector); break; case MAMA_FIELD_TYPE_VECTOR_CHAR: ADD_VECTOR_TO_DICT (Char, char_vector); break; case MAMA_FIELD_TYPE_VECTOR_I8: ADD_VECTOR_TO_DICT (I8, i8_vector); break; case MAMA_FIELD_TYPE_VECTOR_U8: ADD_VECTOR_TO_DICT (U8, u8_vector); break; case MAMA_FIELD_TYPE_VECTOR_I16: ADD_VECTOR_TO_DICT (I16, i16_vector); break; case MAMA_FIELD_TYPE_VECTOR_U16: ADD_VECTOR_TO_DICT (U16, u16_vector); break; case MAMA_FIELD_TYPE_VECTOR_I32: ADD_VECTOR_TO_DICT (I32, i32_vector); break; case MAMA_FIELD_TYPE_VECTOR_U32: ADD_VECTOR_TO_DICT (U32, u32_vector); break; case MAMA_FIELD_TYPE_VECTOR_I64: ADD_VECTOR_TO_DICT (I64, i64_vector); break; case MAMA_FIELD_TYPE_VECTOR_U64: ADD_VECTOR_TO_DICT (U64, u64_vector); break; case MAMA_FIELD_TYPE_VECTOR_F32: ADD_VECTOR_TO_DICT (F32, f32_vector); break; case MAMA_FIELD_TYPE_VECTOR_F64: ADD_VECTOR_TO_DICT (F64, f64_vector); break; case MAMA_FIELD_TYPE_VECTOR_STRING: ADD_VECTOR_TO_DICT (String, string_vector); break; case MAMA_FIELD_TYPE_VECTOR_MSG: ADD_VECTOR_TO_DICT (Msg, msgArray); break; case MAMA_FIELD_TYPE_VECTOR_TIME: ADD_VECTOR_TO_DICT (DateTime, dateTime_vector); break; case MAMA_FIELD_TYPE_VECTOR_PRICE: ADD_VECTOR_TO_DICT (Price, price_vector); break; default: /* error with unknown type */ mama_log (MAMA_LOG_LEVEL_NORMAL, "Could not add type to " "dict message - not supported. [%s] fid=%d name=%s", mamaFieldTypeToString (type), fid, name); break; } } } mamaPrice_destroy (price); mamaDateTime_destroy (dateTime); mamaMsg_destroy (tempMsg); }