Browse Source

MT#55283 add abstract string/int parsing methods

Change-Id: I8acf3c1540a68ec2244a4a7768832855fed7937b
pull/1848/head
Richard Fuchs 1 year ago
parent
commit
a91bfc34e3
3 changed files with 21 additions and 15 deletions
  1. +15
    -15
      daemon/call_interfaces.c
  2. +4
    -0
      daemon/control_ng.c
  3. +2
    -0
      include/control_ng.h

+ 15
- 15
daemon/call_interfaces.c View File

@ -1419,7 +1419,7 @@ void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) {
sdp_ng_flags *out = ctx->flags; sdp_ng_flags *out = ctx->flags;
const ng_parser_t *parser = ctx->parser; const ng_parser_t *parser = ctx->parser;
bencode_get_str(value, &s);
parser->get_str(value, &s);
switch (__csh_lookup(key)) { switch (__csh_lookup(key)) {
case CSH_LOOKUP("address"): case CSH_LOOKUP("address"):
@ -1497,7 +1497,7 @@ void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) {
break; break;
case CSH_LOOKUP("code"): case CSH_LOOKUP("code"):
case CSH_LOOKUP("digit"): case CSH_LOOKUP("digit"):
out->digit = bencode_get_integer_str(value, out->digit);
out->digit = parser->get_int_str(value, out->digit);
if (s.len == 1) if (s.len == 1)
out->digit = s.s[0]; out->digit = s.s[0];
break; break;
@ -1507,7 +1507,7 @@ void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) {
case CSH_LOOKUP("command"): case CSH_LOOKUP("command"):
break; break;
case CSH_LOOKUP("db-id"): case CSH_LOOKUP("db-id"):
out->db_id = bencode_get_integer_str(value, out->db_id);
out->db_id = parser->get_int_str(value, out->db_id);
break; break;
case CSH_LOOKUP("direction"): case CSH_LOOKUP("direction"):
call_ng_direction_flag(out, value); call_ng_direction_flag(out, value);
@ -1572,7 +1572,7 @@ void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) {
case CSH_LOOKUP("DTMF delay"): case CSH_LOOKUP("DTMF delay"):
case CSH_LOOKUP("dtmf-delay"): case CSH_LOOKUP("dtmf-delay"):
case CSH_LOOKUP("dtmf delay"): case CSH_LOOKUP("dtmf delay"):
out->dtmf_delay = bencode_get_integer_str(value, out->dtmf_delay);
out->dtmf_delay = parser->get_int_str(value, out->dtmf_delay);
break; break;
case CSH_LOOKUP("dtmf-log-dest"): case CSH_LOOKUP("dtmf-log-dest"):
case CSH_LOOKUP("DTMF-log-dest"): case CSH_LOOKUP("DTMF-log-dest"):
@ -1583,7 +1583,7 @@ void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) {
STR_FMT(&s)); STR_FMT(&s));
break; break;
case CSH_LOOKUP("duration"): case CSH_LOOKUP("duration"):
out->duration = bencode_get_integer_str(value, out->duration);
out->duration = parser->get_int_str(value, out->duration);
break; break;
#ifdef WITH_TRANSCODING #ifdef WITH_TRANSCODING
case CSH_LOOKUP("DTMF-security"): case CSH_LOOKUP("DTMF-security"):
@ -1606,7 +1606,7 @@ void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) {
break; break;
case CSH_LOOKUP("delay-buffer"): case CSH_LOOKUP("delay-buffer"):
case CSH_LOOKUP("delay buffer"): case CSH_LOOKUP("delay buffer"):
out->delay_buffer = bencode_get_integer_str(value, out->delay_buffer);
out->delay_buffer = parser->get_int_str(value, out->delay_buffer);
break; break;
#endif #endif
case CSH_LOOKUP("endpoint-learning"): case CSH_LOOKUP("endpoint-learning"):
@ -1781,19 +1781,19 @@ void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) {
} }
break; break;
case CSH_LOOKUP("pause"): case CSH_LOOKUP("pause"):
out->pause = bencode_get_integer_str(value, out->pause);
out->pause = parser->get_int_str(value, out->pause);
break; break;
case CSH_LOOKUP("player"): case CSH_LOOKUP("player"):
case CSH_LOOKUP("ptime"): case CSH_LOOKUP("ptime"):
if (out->opmode == OP_OFFER) if (out->opmode == OP_OFFER)
out->ptime = bencode_get_integer_str(value, 0);
out->ptime = parser->get_int_str(value, 0);
break; break;
case CSH_LOOKUP("ptime-reverse"): case CSH_LOOKUP("ptime-reverse"):
case CSH_LOOKUP("ptime reverse"): case CSH_LOOKUP("ptime reverse"):
case CSH_LOOKUP("reverse ptime"): case CSH_LOOKUP("reverse ptime"):
case CSH_LOOKUP("reverse-ptime"): case CSH_LOOKUP("reverse-ptime"):
if (out->opmode == OP_OFFER) if (out->opmode == OP_OFFER)
out->rev_ptime = bencode_get_integer_str(value, 0);
out->rev_ptime = parser->get_int_str(value, 0);
break; break;
case CSH_LOOKUP("received from"): case CSH_LOOKUP("received from"):
@ -1834,7 +1834,7 @@ void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) {
out->recording_pattern = s; out->recording_pattern = s;
break; break;
case CSH_LOOKUP("repeat-times"): case CSH_LOOKUP("repeat-times"):
out->repeat_times = bencode_get_integer_str(value, out->repeat_times);
out->repeat_times = parser->get_int_str(value, out->repeat_times);
break; break;
case CSH_LOOKUP("replace"): case CSH_LOOKUP("replace"):
call_ng_flags_str_list(out, value, call_ng_flags_replace, NULL); call_ng_flags_str_list(out, value, call_ng_flags_replace, NULL);
@ -1882,7 +1882,7 @@ void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) {
} }
break; break;
case CSH_LOOKUP("start-pos"): case CSH_LOOKUP("start-pos"):
out->start_pos = bencode_get_integer_str(value, out->start_pos);
out->start_pos = parser->get_int_str(value, out->start_pos);
break; break;
case CSH_LOOKUP("supports"): case CSH_LOOKUP("supports"):
call_ng_flags_str_list(out, value, call_ng_flags_supports, NULL); call_ng_flags_str_list(out, value, call_ng_flags_supports, NULL);
@ -1907,7 +1907,7 @@ void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) {
break; break;
case CSH_LOOKUP("TOS"): case CSH_LOOKUP("TOS"):
case CSH_LOOKUP("tos"): case CSH_LOOKUP("tos"):
out->tos = bencode_get_integer_str(value, out->tos);
out->tos = parser->get_int_str(value, out->tos);
break; break;
case CSH_LOOKUP("transport protocol"): case CSH_LOOKUP("transport protocol"):
case CSH_LOOKUP("transport-protocol"): case CSH_LOOKUP("transport-protocol"):
@ -1929,20 +1929,20 @@ void call_ng_main_flags(ng_parser_ctx_t *ctx, str *key, bencode_item_t *value) {
case CSH_LOOKUP("trigger end time"): case CSH_LOOKUP("trigger end time"):
case CSH_LOOKUP("end-trigger-time"): case CSH_LOOKUP("end-trigger-time"):
case CSH_LOOKUP("end trigger time"): case CSH_LOOKUP("end trigger time"):
out->trigger_end_ms = bencode_get_integer_str(value, out->trigger_end_ms);
out->trigger_end_ms = parser->get_int_str(value, out->trigger_end_ms);
break; break;
case CSH_LOOKUP("trigger-end-digits"): case CSH_LOOKUP("trigger-end-digits"):
case CSH_LOOKUP("trigger end digits"): case CSH_LOOKUP("trigger end digits"):
case CSH_LOOKUP("end-trigger-digits"): case CSH_LOOKUP("end-trigger-digits"):
case CSH_LOOKUP("end trigger digits"): case CSH_LOOKUP("end trigger digits"):
out->trigger_end_digits = bencode_get_integer_str(value, out->trigger_end_digits);
out->trigger_end_digits = parser->get_int_str(value, out->trigger_end_digits);
break; break;
case CSH_LOOKUP("via-branch"): case CSH_LOOKUP("via-branch"):
out->via_branch = s; out->via_branch = s;
break; break;
case CSH_LOOKUP("volume"): case CSH_LOOKUP("volume"):
out->volume = bencode_get_integer_str(value, out->volume);
out->volume = parser->get_int_str(value, out->volume);
break; break;
case CSH_LOOKUP("vsc-pause-rec"): case CSH_LOOKUP("vsc-pause-rec"):
case CSH_LOOKUP("VSC-pause-rec"): case CSH_LOOKUP("VSC-pause-rec"):


+ 4
- 0
daemon/control_ng.c View File

@ -102,10 +102,14 @@ static void bencode_dict_iter(ng_parser_ctx_t *ctx, bencode_item_t *input,
const ng_parser_t ng_parser_native = { const ng_parser_t ng_parser_native = {
.collapse = bencode_collapse_str, .collapse = bencode_collapse_str,
.dict_iter = bencode_dict_iter, .dict_iter = bencode_dict_iter,
.get_str = bencode_get_str,
.get_int_str = bencode_get_integer_str,
}; };
const ng_parser_t ng_parser_json = { const ng_parser_t ng_parser_json = {
.collapse = bencode_collapse_str_json, .collapse = bencode_collapse_str_json,
.dict_iter = bencode_dict_iter, .dict_iter = bencode_dict_iter,
.get_str = bencode_get_str,
.get_int_str = bencode_get_integer_str,
}; };


+ 2
- 0
include/control_ng.h View File

@ -101,6 +101,8 @@ struct ng_parser {
str *(*collapse)(bencode_item_t *root, str *out); str *(*collapse)(bencode_item_t *root, str *out);
void (*dict_iter)(ng_parser_ctx_t *, bencode_item_t *, void (*dict_iter)(ng_parser_ctx_t *, bencode_item_t *,
void (*callback)(ng_parser_ctx_t *, str *, bencode_item_t *)); void (*callback)(ng_parser_ctx_t *, str *, bencode_item_t *));
str *(*get_str)(bencode_item_t *, str *s);
long long (*get_int_str)(bencode_item_t *, long long def);
}; };
struct ng_parser_ctx { struct ng_parser_ctx {
const ng_parser_t *parser; const ng_parser_t *parser;


Loading…
Cancel
Save