![]() |
TO COMPLETE
#define EASYDBUS_INTROSPECT_ARG_DIRECTION_O "direction=\"" |
Definition at line 113 of file introspect_internal.h.
Referenced by easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_ARG_DIRECTION_O_L 11 |
Definition at line 115 of file introspect_internal.h.
Referenced by easydbus_introspect_get_interface_string_length(), and easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_ARG_NAME_TAG_O " <arg name=\"" |
Definition at line 105 of file introspect_internal.h.
Referenced by easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_ARG_NAME_TAG_O_L 15 |
Definition at line 107 of file introspect_internal.h.
Referenced by easydbus_introspect_get_interface_string_length(), and easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_ARG_SPACE "\" " |
Definition at line 101 of file introspect_internal.h.
Referenced by easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_ARG_SPACE_L 2 |
Definition at line 103 of file introspect_internal.h.
Referenced by easydbus_introspect_get_interface_string_length(), and easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_ARG_TYPE_TAG_O "type=\"" |
Definition at line 109 of file introspect_internal.h.
Referenced by easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_ARG_TYPE_TAG_O_L 6 |
Definition at line 111 of file introspect_internal.h.
Referenced by easydbus_introspect_get_interface_string_length(), and easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_DIRECTION_IN "in" |
Definition at line 117 of file introspect_internal.h.
Referenced by easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_DIRECTION_IN_L 2 |
Definition at line 119 of file introspect_internal.h.
Referenced by easydbus_introspect_get_interface_string_length(), and easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_DIRECTION_OUT "out" |
Definition at line 121 of file introspect_internal.h.
Referenced by easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_DIRECTION_OUT_L 3 |
Definition at line 123 of file introspect_internal.h.
Referenced by easydbus_introspect_get_interface_string_length(), and easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_INTERFACE_TAG_C " </interface>\n" |
Definition at line 81 of file introspect_internal.h.
Referenced by easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_INTERFACE_TAG_C_L 15 |
Definition at line 83 of file introspect_internal.h.
Referenced by easydbus_introspect_get_interface_string_length(), and easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_INTERFACE_TAG_O " <interface name=\"" |
Definition at line 77 of file introspect_internal.h.
Referenced by easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_INTERFACE_TAG_O_L 19 |
Definition at line 79 of file introspect_internal.h.
Referenced by easydbus_introspect_get_interface_string_length(), and easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_MEMCOPY | ( | buf, | |||
offset, | |||||
s, | |||||
s_l | ) |
Value:
{ \ memcpy (&buf[offset], s, s_l); \ offset += s_l; \ }
For internal use only.
Definition at line 129 of file introspect_internal.h.
Referenced by easydbus_introspect_set_interface_buffer(), easydbus_introspect_set_object_buffer(), and easydbus_introspect_set_reply_buffer().
#define EASYDBUS_INTROSPECT_METHOD "Introspect" |
Definition at line 43 of file introspect_internal.h.
Referenced by easydbus_introspect_filter_func().
#define EASYDBUS_INTROSPECT_METHOD_TAG_C " </method>\n" |
Definition at line 89 of file introspect_internal.h.
Referenced by easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_METHOD_TAG_C_L 13 |
Definition at line 91 of file introspect_internal.h.
Referenced by easydbus_introspect_get_interface_string_length(), and easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_METHOD_TAG_O " <method name=\"" |
Definition at line 85 of file introspect_internal.h.
Referenced by easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_METHOD_TAG_O_L 17 |
Definition at line 87 of file introspect_internal.h.
Referenced by easydbus_introspect_get_interface_string_length(), and easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_MSG DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE |
Definition at line 38 of file introspect_internal.h.
Referenced by easydbus_introspect_get_reply_length(), and easydbus_introspect_set_reply_buffer().
#define EASYDBUS_INTROSPECT_MSG_COMMENT "<!-- Created with EasyDbus Library by Ge@@ru -->\n" |
Definition at line 40 of file introspect_internal.h.
Referenced by easydbus_introspect_get_reply_length(), and easydbus_introspect_set_reply_buffer().
#define EASYDBUS_INTROSPECT_NODE_TAG_C "</node>\n" |
Definition at line 57 of file introspect_internal.h.
Referenced by easydbus_introspect_set_reply_buffer().
#define EASYDBUS_INTROSPECT_NODE_TAG_C_L 8 |
Definition at line 59 of file introspect_internal.h.
Referenced by easydbus_introspect_get_reply_length(), and easydbus_introspect_set_reply_buffer().
#define EASYDBUS_INTROSPECT_NODE_TAG_INIT " <node name=\"" |
Definition at line 61 of file introspect_internal.h.
Referenced by easydbus_introspect_set_reply_buffer().
#define EASYDBUS_INTROSPECT_NODE_TAG_INIT2 "<node name=\"" |
Definition at line 65 of file introspect_internal.h.
Referenced by easydbus_introspect_set_reply_buffer().
#define EASYDBUS_INTROSPECT_NODE_TAG_INIT2_L 12 |
Definition at line 67 of file introspect_internal.h.
Referenced by easydbus_introspect_get_reply_length(), and easydbus_introspect_set_reply_buffer().
#define EASYDBUS_INTROSPECT_NODE_TAG_INIT_C "\">\n" |
Definition at line 69 of file introspect_internal.h.
Referenced by easydbus_introspect_set_interface_buffer(), and easydbus_introspect_set_reply_buffer().
#define EASYDBUS_INTROSPECT_NODE_TAG_INIT_C_L 3 |
Definition at line 71 of file introspect_internal.h.
Referenced by easydbus_introspect_get_interface_string_length(), easydbus_introspect_get_reply_length(), easydbus_introspect_set_interface_buffer(), and easydbus_introspect_set_reply_buffer().
#define EASYDBUS_INTROSPECT_NODE_TAG_INIT_L 13 |
Definition at line 63 of file introspect_internal.h.
Referenced by easydbus_introspect_get_reply_length(), and easydbus_introspect_set_reply_buffer().
#define EASYDBUS_INTROSPECT_NODE_TAG_O "<node>\n" |
Definition at line 53 of file introspect_internal.h.
Referenced by easydbus_introspect_set_reply_buffer().
#define EASYDBUS_INTROSPECT_NODE_TAG_O_L 7 |
Definition at line 55 of file introspect_internal.h.
Referenced by easydbus_introspect_get_reply_length(), and easydbus_introspect_set_reply_buffer().
#define EASYDBUS_INTROSPECT_SIGNAL_TAG_C " </signal>\n" |
Definition at line 97 of file introspect_internal.h.
Referenced by easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_SIGNAL_TAG_C_L 13 |
Definition at line 99 of file introspect_internal.h.
Referenced by easydbus_introspect_get_interface_string_length(), and easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_SIGNAL_TAG_O " <signal name=\"" |
Definition at line 93 of file introspect_internal.h.
Referenced by easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_SIGNAL_TAG_O_L 17 |
Definition at line 95 of file introspect_internal.h.
Referenced by easydbus_introspect_get_interface_string_length(), and easydbus_introspect_set_interface_buffer().
#define EASYDBUS_INTROSPECT_TAG_END "\"/>\n" |
Definition at line 73 of file introspect_internal.h.
Referenced by easydbus_introspect_set_interface_buffer(), and easydbus_introspect_set_reply_buffer().
#define EASYDBUS_INTROSPECT_TAG_END_L 4 |
Definition at line 75 of file introspect_internal.h.
Referenced by easydbus_introspect_get_interface_string_length(), easydbus_introspect_get_reply_length(), easydbus_introspect_set_interface_buffer(), and easydbus_introspect_set_reply_buffer().
#define EASYDBUS_INTROSPECT_XML_INTERFACE_DATA |
Value:
" <interface name=\"org.freedesktop.DBus.Introspectable\">\n" \ " <method name=\"Introspect\">\n" \ " <arg name=\"data\" type=\"s\" direction=\"out\" />\n" \ " </method>\n" \ " </interface>\n"
Definition at line 45 of file introspect_internal.h.
Referenced by easydbus_introspect_get_obj_string_length(), and easydbus_introspect_set_object_buffer().
typedef struct introspect_objs_tree introspect_objs_tree |
typedef for struct instrospect_objs_tree
Definition at line 137 of file introspect_internal.h.
int easydbus_add_info_field_on_register_method | ( | EasyDbus_obj_method * | method, | |
unsigned char | offset, | |||
char * | name_field, | |||
unsigned char | type, | |||
... | ||||
) |
Add information for introspectable interface about EasyDbus_obj_method object of register method.
type | 0 --> input, 1 --> output. | |
method | method where add new info data. | |
offset | offset of element on argument on method. | |
name_field | arg name. |
0 ok
Definition at line 63 of file introspect.c.
References easydbus_add_elem_to_stack(), easydbus_add_new_field_to_list(), easydbus_create_arg_signature(), EASYDBUS_ELTYPE_INVALID, easydbus_free_elem_from_stack_list(), easydbus_free_introspect_info_arg(), EASYDBUS_MEMCOPY, EasyDbus_obj_method::input_info, easydbus_introspect_arg_info::name, easydbus_introspect_arg_info::next, easydbus_introspect_arg_info::offset, EasyDbus_obj_method::output_info, and easydbus_introspect_arg_info::signature.
00067 { 00068 struct easydbus_introspect_arg_info *el, *list; 00069 struct easydbus_signature_elem_stack *list_elem; 00070 enum el_type elem = EASYDBUS_ELTYPE_INVALID; 00071 int name_length = 0; 00072 va_list ap; 00073 00074 if (method == NULL || name_field == NULL || type > 1) 00075 return -1; 00076 00077 list = el = NULL; 00078 list_elem = NULL; 00079 00080 if (type) 00081 list = method->output_info; 00082 else 00083 list = method->input_info; 00084 00085 if (list != NULL) { 00086 // check if there is already a info about 00087 // a field with an offset == offset 00088 el = list; 00089 while (el != NULL) { 00090 if (el->offset == offset) 00091 return -1; 00092 el = el->next; 00093 } 00094 } 00095 00096 el = (struct easydbus_introspect_arg_info *) 00097 malloc (sizeof (struct easydbus_introspect_arg_info)); 00098 if (el == NULL) 00099 return -1; 00100 00101 /* initialize new element */ 00102 memset (el, 0, 00103 sizeof (struct easydbus_introspect_arg_info)); 00104 el->name = el->signature = NULL; 00105 el->next = NULL; 00106 00107 /* get elements list */ 00108 va_start (ap, type); 00109 00110 /* recover data from input params list */ 00111 elem = va_arg (ap, enum el_type); 00112 00113 while (elem != EASYDBUS_ELTYPE_INVALID) { 00114 list_elem = 00115 easydbus_add_elem_to_stack (elem, list_elem); 00116 elem = va_arg (ap, enum el_type); 00117 } 00118 va_end (ap); 00119 00120 el->signature = 00121 easydbus_create_arg_signature (list_elem); 00122 if (el->signature == NULL) 00123 goto error; 00124 list_elem = NULL; 00125 00126 name_length = strlen (name_field) + 1; 00127 el->name = (char *) malloc (name_length); 00128 if (el->name == NULL) 00129 goto error; 00130 00131 EASYDBUS_MEMCOPY (el->name, name_field, name_length); 00132 el->offset = offset; 00133 00134 if (easydbus_add_new_field_to_list (el, &list)) 00135 goto error; 00136 00137 if (type) 00138 method->output_info = list; 00139 else 00140 method->input_info = list; 00141 00142 00143 return 0; 00144 00145 error: 00146 if (el != NULL) 00147 easydbus_free_introspect_info_arg (el); 00148 00149 easydbus_free_elem_from_stack_list (list_elem); 00150 00151 return -1; 00152 }
int easydbus_add_info_field_on_register_signal | ( | EasyDbus_obj_signal * | signal, | |
unsigned char | offset, | |||
char * | name_field, | |||
... | ||||
) |
Add information for introspectable interface about EasyDbus_obj_signal object of register signal.
signal | signal where add new info data. | |
offset | offset of element on argument on signal. | |
name_field | arg name. |
0 ok
Definition at line 165 of file introspect.c.
References easydbus_add_elem_to_stack(), easydbus_add_new_field_to_list(), easydbus_create_arg_signature(), EASYDBUS_ELTYPE_INVALID, easydbus_free_elem_from_stack_list(), easydbus_free_introspect_info_arg(), EASYDBUS_MEMCOPY, easydbus_introspect_arg_info::name, easydbus_introspect_arg_info::next, easydbus_introspect_arg_info::offset, EasyDbus_obj_signal::output_info, and easydbus_introspect_arg_info::signature.
00168 { 00169 struct easydbus_introspect_arg_info *el = NULL; 00170 struct easydbus_signature_elem_stack *list_elem; 00171 enum el_type elem = EASYDBUS_ELTYPE_INVALID; 00172 int name_length = 0; 00173 va_list ap; 00174 00175 if (signal == NULL || name_field == NULL) 00176 return -1; 00177 00178 list_elem = NULL; 00179 00180 if (signal->output_info != NULL) { 00181 // check if there is already a info about 00182 // a field with an offset == offset 00183 el = signal->output_info; 00184 while (el != NULL) { 00185 if (el->offset == offset) 00186 return -1; 00187 el = el->next; 00188 } 00189 } 00190 00191 el = (struct easydbus_introspect_arg_info *) 00192 malloc (sizeof (struct easydbus_introspect_arg_info)); 00193 if (el == NULL) 00194 return -1; 00195 00196 /* initialize new element */ 00197 memset (el, 0, 00198 sizeof (struct easydbus_introspect_arg_info)); 00199 el->name = NULL; 00200 el->next = NULL; 00201 00202 /* get elements list */ 00203 va_start (ap, name_field); 00204 00205 /* recover data from input params list */ 00206 elem = va_arg (ap, enum el_type); 00207 00208 while (elem != EASYDBUS_ELTYPE_INVALID) { 00209 list_elem = 00210 easydbus_add_elem_to_stack (elem, list_elem); 00211 elem = va_arg (ap, enum el_type); 00212 } 00213 va_end (ap); 00214 00215 el->signature = 00216 easydbus_create_arg_signature (list_elem); 00217 if (el->signature == NULL) 00218 goto error; 00219 list_elem = NULL; 00220 00221 name_length = strlen (name_field) + 1; 00222 el->name = (char *) malloc (name_length); 00223 if (el->name == NULL) 00224 goto error; 00225 00226 EASYDBUS_MEMCOPY (el->name, name_field, name_length); 00227 el->offset = offset; 00228 00229 if (easydbus_add_new_field_to_list 00230 (el, &signal->output_info)) 00231 goto error; 00232 00233 return 0; 00234 00235 error: 00236 if (el != NULL) 00237 easydbus_free_introspect_info_arg (el); 00238 00239 easydbus_free_elem_from_stack_list (list_elem); 00240 00241 return -1; 00242 }
int easydbus_enable_introspect_check | ( | EasyDbus_conn * | data, | |
EasyDbus_object * | object, | |||
char * | obj_path | |||
) |
Enable introspect method filter for automatic management and reply for message sent to Introspectable interface of an object.
0 ok
Definition at line 256 of file introspect.c.
References easydbus_introspect_create_reply_string(), easydbus_introspect_objs_tree_build(), easydbus_introspect_objs_tree_destroy(), and EasyDbus_core::handled_introspect.
00259 { 00260 struct EasyDbus_core *core = 00261 (struct EasyDbus_core *) data; 00262 char *introspect_string = NULL; 00263 introspect_objs_tree *t = NULL; 00264 00265 if (!data || !object) 00266 return -1; 00267 00268 00269 t = easydbus_introspect_objs_tree_build ((struct EasyDbus_object_box *) 00270 object); 00271 if (!t) return -1; 00272 00273 /* check if this is needed */ 00274 introspect_string = 00275 easydbus_introspect_create_reply_string (obj_path, t, 00276 (struct EasyDbus_object_box *) 00277 object); 00278 00279 easydbus_introspect_objs_tree_destroy (t); 00280 00281 if (!introspect_string) 00282 return -1; 00283 free (introspect_string); 00284 00285 core->handled_introspect = 1; 00286 00287 return 0; 00288 }