mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 19:16:15 +00:00
pjsip_cli: Create pjsip show channel and contact, and general cli code cleanup.
Created the 'pjsip show channel' and 'pjsip show contact' commands. Refactored out the hated ast_hashtab. Replaced with ao2_container. Cleaned up function naming. Internal only, no public name changes. Cleaned up whitespace and brace formatting in cli code. Changed some NULL checking from "if"s to ast_asserts. Fixed some register/unregister ordering to reduce deadlock potential. Fixed ast_sip_location_add_contact where the 'name' buffer was too short. Fixed some self-assignment issues in res_pjsip_outbound_registration. (closes issue ASTERISK-23276) Review: http://reviewboard.asterisk.org/r/3283/ ........ Merged revisions 410287 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@410288 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -1832,12 +1832,61 @@ void ast_sorcery_observer_remove(const struct ast_sorcery *sorcery, const char *
|
||||
sorcery_observer_remove, cbs);
|
||||
}
|
||||
|
||||
int ast_sorcery_object_id_compare(const void *obj_left, const void *obj_right, int flags)
|
||||
int ast_sorcery_object_id_sort(const void *obj, const void *arg, int flags)
|
||||
{
|
||||
if (!obj_left || !obj_right) {
|
||||
return 0;
|
||||
const char *right_key = arg;
|
||||
int cmp;
|
||||
|
||||
switch (flags & OBJ_SEARCH_MASK) {
|
||||
case OBJ_SEARCH_OBJECT:
|
||||
right_key = ast_sorcery_object_get_id(arg);
|
||||
/* Fall through */
|
||||
case OBJ_SEARCH_KEY:
|
||||
cmp = strcmp(ast_sorcery_object_get_id(obj), right_key);
|
||||
break;
|
||||
case OBJ_SEARCH_PARTIAL_KEY:
|
||||
cmp = strncmp(ast_sorcery_object_get_id(obj), right_key, strlen(right_key));
|
||||
break;
|
||||
default:
|
||||
cmp = 0;
|
||||
break;
|
||||
}
|
||||
return strcmp(ast_sorcery_object_get_id(obj_left), ast_sorcery_object_get_id(obj_right));
|
||||
return cmp;
|
||||
}
|
||||
|
||||
int ast_sorcery_object_id_compare(void *obj, void *arg, int flags)
|
||||
{
|
||||
const char *right_key = arg;
|
||||
int cmp = 0;
|
||||
|
||||
switch (flags & OBJ_SEARCH_MASK) {
|
||||
case OBJ_SEARCH_OBJECT:
|
||||
right_key = ast_sorcery_object_get_id(arg);
|
||||
/* Fall through */
|
||||
case OBJ_SEARCH_KEY:
|
||||
if (strcmp(ast_sorcery_object_get_id(obj), right_key) == 0) {
|
||||
cmp = CMP_MATCH | CMP_STOP;
|
||||
}
|
||||
break;
|
||||
case OBJ_SEARCH_PARTIAL_KEY:
|
||||
if (strncmp(ast_sorcery_object_get_id(obj), right_key, strlen(right_key)) == 0) {
|
||||
cmp = CMP_MATCH;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
cmp = 0;
|
||||
break;
|
||||
}
|
||||
return cmp;
|
||||
}
|
||||
|
||||
int ast_sorcery_object_id_hash(const void *obj, int flags) {
|
||||
if (flags & OBJ_SEARCH_OBJECT) {
|
||||
return ast_str_hash(ast_sorcery_object_get_id(obj));
|
||||
} else if (flags & OBJ_SEARCH_KEY) {
|
||||
return ast_str_hash(obj);
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
struct ast_sorcery_object_type *ast_sorcery_get_object_type(const struct ast_sorcery *sorcery,
|
||||
|
Reference in New Issue
Block a user