| #ifndef ENTITY_H | |
| #define ENTITY_H 1 | |
| /* | |
| * Licensed to the Apache Software Foundation (ASF) under one | |
| * or more contributor license agreements. See the NOTICE file | |
| * distributed with this work for additional information | |
| * regarding copyright ownership. The ASF licenses this file | |
| * to you under the Apache License, Version 2.0 (the | |
| * "License"); you may not use this file except in compliance | |
| * with the License. You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, | |
| * software distributed under the License is distributed on an | |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| * KIND, either express or implied. See the License for the | |
| * specific language governing permissions and limitations | |
| * under the License. | |
| */ | |
| #include "qpid/dispatch/error.h" | |
| #include <stdbool.h> | |
| /** | |
| * @defgroup entity-attributes Set/get cached attributes of a managed entity. | |
| * | |
| * @{ | |
| */ | |
| /** A managed entitie's attributes */ | |
| typedef struct qd_entity_t qd_entity_t; | |
| /** True if the entity has this attribute. */ | |
| bool qd_entity_has(qd_entity_t* entity, const char *attribute); | |
| /** Get a string valued attribute. | |
| * @return New string value, caller must free. | |
| * Return NULL and set qd_error if there is an error. | |
| **/ | |
| char *qd_entity_get_string(qd_entity_t *entity, const char* attribute); | |
| /** Get an integer valued attribute. Return -1 and set qd_error if there is an error. */ | |
| long qd_entity_get_long(qd_entity_t *entity, const char* attribute); | |
| /** Get a boolean valued attribute. Return false and set qd_error if there is an error. */ | |
| bool qd_entity_get_bool(qd_entity_t *entity, const char *attribute); | |
| /** Get a string valued attribute. | |
| * @return New string value, caller must free. | |
| * Return copy of default_value if attribute is missing or there is an error. | |
| * Return NULL and set qd_error if there is an error (missing attribute is not an error.) | |
| **/ | |
| char *qd_entity_opt_string(qd_entity_t *entity, const char *attribute, const char *default_value); | |
| /** Get an integer valued attribute. | |
| * @return Attribute value or default_value if attribute is missing. | |
| * Set qd_error and return default_value if there is an error (missing attribute is not an error.) | |
| */ | |
| long qd_entity_opt_long(qd_entity_t *entity, const char *attribute, long default_value); | |
| /** Get a boolean valued attribute. Return false and set qd_error if there is an error. | |
| * @return Attribute value or default_value if attribute is missing. | |
| * Set qd_error and return default_value if there is an error (missing attribute is not an error.) | |
| */ | |
| bool qd_entity_opt_bool(qd_entity_t *entity, const char *attribute, bool default_value); | |
| /** Get a map in pn_data_t format. Return NULL if map not present or error parsing out map | |
| * Caller must free pn_data_t when no longer in use. | |
| */ | |
| struct pn_data_t *qd_entity_opt_map(qd_entity_t *entity, const char *attribute); | |
| /** Set a string valued attribute, entity makes a copy. | |
| * If value is NULL clear the attribute. | |
| */ | |
| qd_error_t qd_entity_set_string(qd_entity_t *entity, const char* attribute, const char *value); | |
| /** Set an integer valued attribute. */ | |
| qd_error_t qd_entity_set_long(qd_entity_t *entity, const char* attribute, long value); | |
| /** Set a boolean valued attribute. */ | |
| qd_error_t qd_entity_set_bool(qd_entity_t *entity, const char *attribute, bool value); | |
| /** Set an integer valued attribute. If value is NULL clear the attribute. */ | |
| qd_error_t qd_entity_set_longp(qd_entity_t *entity, const char* attribute, const long *value); | |
| /** Set a boolean valued attribute. If value is NULL clear the attribute. */ | |
| qd_error_t qd_entity_set_boolp(qd_entity_t *entity, const char *attribute, const bool *value); | |
| /** Clear the attribute */ | |
| qd_error_t qd_entity_clear(qd_entity_t *entity, const char *attribute); | |
| /** | |
| * Set the attribute to an empty list. Futher qd_entity_set* calls for the attribute | |
| * will append values to the list. | |
| */ | |
| qd_error_t qd_entity_set_list(qd_entity_t *entity, const char *attribute); | |
| /** | |
| * Set the attribute to an empty dictionary. To further add key/value pairs to this new dict, use qd_entity_set_map_key_value | |
| */ | |
| qd_error_t qd_entity_set_map(qd_entity_t *entity, const char *attribute); | |
| /** | |
| * Add a new key/value pair to the attribute which needs to be dict. | |
| * @return - QD_ERROR_NONE if there were no errors | |
| * - QD_ERROR_PYTHON if there was an error from the Python side when setting the key/value error | |
| * - QD_ERROR_VALUE if a non-dictionary attribute was specified | |
| */ | |
| qd_error_t qd_entity_set_map_key_value_string(qd_entity_t *entity, const char *attribute, const char *key, const char *value); | |
| qd_error_t qd_entity_set_map_key_value_int(qd_entity_t *entity, const char *attribute, const char *key, int value); | |
| /// @} | |
| #endif |