{
char c;
JsonObject *params = json_object_new();
+ JsonObject *member;
ASSERT(object);
while (*formats) {
+ member = json_object_new();
switch ((c = *formats++)) {
case 'b':
- json_object_set_boolean_member(params,
+ json_object_set_object_member(params, (const gchar*)va_arg(ap, char *), member);
+ json_object_set_boolean_member(member,
data_type_strs[ESPP_SERVICE_DATA_TYPE_BOOL], (gboolean)va_arg(ap, int));
break;
case 'i':
- json_object_set_int_member(params,
+ json_object_set_object_member(params, (const gchar*)va_arg(ap, char *), member);
+ json_object_set_int_member(member,
data_type_strs[ESPP_SERVICE_DATA_TYPE_INT], (gint64)va_arg(ap, int));
break;
case 'l':
- json_object_set_int_member(params,
+ json_object_set_object_member(params, (const gchar*)va_arg(ap, char *), member);
+ json_object_set_int_member(member,
data_type_strs[ESPP_SERVICE_DATA_TYPE_INT64], (gint64)va_arg(ap, int64_t));
break;
case 'u':
- json_object_set_int_member(params,
+ json_object_set_object_member(params, (const gchar*)va_arg(ap, char *), member);
+ json_object_set_int_member(member,
data_type_strs[ESPP_SERVICE_DATA_TYPE_UINT], (gint64)va_arg(ap, unsigned int));
break;
case 'k':
- json_object_set_int_member(params,
+ json_object_set_object_member(params, (const gchar*)va_arg(ap, char *), member);
+ json_object_set_int_member(member,
data_type_strs[ESPP_SERVICE_DATA_TYPE_UINT64], (gint64)va_arg(ap, uint64_t));
break;
case 'd':
- json_object_set_double_member(params,
+ json_object_set_object_member(params, (const gchar*)va_arg(ap, char *), member);
+ json_object_set_double_member(member,
data_type_strs[ESPP_SERVICE_DATA_TYPE_DOUBLE], (gdouble)va_arg(ap, double));
break;
case 's':
- json_object_set_string_member(params,
+ json_object_set_object_member(params, (const gchar*)va_arg(ap, char *), member);
+ json_object_set_string_member(member,
data_type_strs[ESPP_SERVICE_DATA_TYPE_STRING], (const gchar*)va_arg(ap, char *));
break;
default:
LOG_ERROR("not supported format[%c]", c);
+ json_object_unref(member);
json_object_unref(params);
json_object_unref(object);
return NULL;
FILL_SOCKET_MSG_REQUEST(data, ESPP_SERVICE_REQUEST_SET_AUDIO_STREAM_INFO);
FILL_SOCKET_MSG_PARAMS(data, ESPP_SERVICE_REQUEST_SET_AUDIO_STREAM_INFO,
- info->codec_data, info->codec_data_length, info->mime_type,
- info->bitrate, info->channels, info->sample_rate);
+ "codec_data", info->codec_data, "codec_data_length", info->codec_data_length, "mime_type", info->mime_type,
+ "bitrate", info->bitrate, "channels", info->channels, "sample_rate", info->sample_rate);
if (send_data(espp->fd, &data, &result) != 0)
return -1;
FILL_SOCKET_MSG_REQUEST(data, ESPP_SERVICE_REQUEST_SET_VIDEO_STREAM_INFO);
FILL_SOCKET_MSG_PARAMS(data, ESPP_SERVICE_REQUEST_SET_VIDEO_STREAM_INFO,
- info->codec_data, info->codec_data_length, info->mime_type,
- info->width, info->height, info->max_width, info->max_height,
- info->framerate_num, info->framerate_den);
+ "codec_data", info->codec_data, "codec_data_length", info->codec_data_length, "mime_type", info->mime_type,
+ "width", info->width, "height", info->height, "max_width", info->max_width, "max_height", info->max_height,
+ "framerate_num", info->framerate_num, "framerate_den", info->framerate_den);
if (send_data(espp->fd, &data, &result) != 0)
return -1;
{
formats_data_s *data = (formats_data_s *)user_data;
char c;
+ JsonObject *member = json_node_get_object(node);
ASSERT(data);
+ ASSERT(member);
switch ((c = *(data->formats + data->count++))) {
- case 'b': {
- RET_IF(g_strcmp0(name, data_type_strs[ESPP_SERVICE_DATA_TYPE_BOOL]), "type[%s] is not bool", name);
- *(va_arg(data->ap, int*)) = json_node_get_boolean(node);
+ case 'b':
+ *(va_arg(data->ap, int*)) = json_object_get_boolean_member(member, data_type_strs[ESPP_SERVICE_DATA_TYPE_BOOL]);
break;
- }
- case 'i': {
- RET_IF(g_strcmp0(name, data_type_strs[ESPP_SERVICE_DATA_TYPE_INT]), "type[%s] is not int", name);
- *(va_arg(data->ap, int*)) = json_node_get_int(node);
+ case 'i':
+ *(va_arg(data->ap, int*)) = json_object_get_int_member(member, data_type_strs[ESPP_SERVICE_DATA_TYPE_INT]);
break;
- }
- case 'l': {
- RET_IF(g_strcmp0(name, data_type_strs[ESPP_SERVICE_DATA_TYPE_INT64]), "type[%s] is not int64", name);
- *(va_arg(data->ap, int64_t*)) = json_node_get_int(node);
+ case 'l':
+ *(va_arg(data->ap, int64_t*)) = json_object_get_int_member(member, data_type_strs[ESPP_SERVICE_DATA_TYPE_INT64]);
break;
- }
- case 'u': {
- RET_IF(g_strcmp0(name, data_type_strs[ESPP_SERVICE_DATA_TYPE_UINT]), "type[%s] is not uint", name);
- *(va_arg(data->ap, unsigned int*)) = json_node_get_int(node);
+ case 'u':
+ *(va_arg(data->ap, unsigned int*)) = json_object_get_int_member(member, data_type_strs[ESPP_SERVICE_DATA_TYPE_UINT]);
break;
- }
- case 'k': {
- RET_IF(g_strcmp0(name, data_type_strs[ESPP_SERVICE_DATA_TYPE_UINT64]), "type[%s] is not uint64", name);
- *(va_arg(data->ap, uint64_t*)) = json_node_get_int(node);
+ case 'k':
+ *(va_arg(data->ap, uint64_t*)) = json_object_get_int_member(member, data_type_strs[ESPP_SERVICE_DATA_TYPE_UINT64]);
break;
- }
- case 'd': {
- RET_IF(g_strcmp0(name, data_type_strs[ESPP_SERVICE_DATA_TYPE_DOUBLE]), "type[%s] is not double", name);
- *(va_arg(data->ap, double*)) = json_node_get_double(node);
+ case 'd':
+ *(va_arg(data->ap, double*)) = json_object_get_double_member(member, data_type_strs[ESPP_SERVICE_DATA_TYPE_DOUBLE]);
break;
- }
- case 's': {
- RET_IF(g_strcmp0(name, data_type_strs[ESPP_SERVICE_DATA_TYPE_STRING]), "type[%s] is not string", name);
- *(va_arg(data->ap, char**)) = g_strdup(json_node_get_string(node));
+ case 's':
+ *(va_arg(data->ap, char**)) = g_strdup(json_object_get_string_member(member, data_type_strs[ESPP_SERVICE_DATA_TYPE_STRING]));
break;
- }
default:
LOG_ERROR("not supported format[%c]", c);
}
int espp_service_init_socket(espp_service_s *svc);
void espp_service_deinit_socket(espp_service_s *svc);
-int espp_service_func_handler(espp_service_s *svc, int fd, espp_service_data_from_client_s *request, espp_service_data_from_server_s *result);
+int espp_service_func_handler(espp_service_s *svc, int fd, espp_service_data_from_client_s *data, espp_service_data_from_server_s *result);
void espp_service_handle_destroy_cb(gpointer data);
int espp_service_msg_parse_params(const char *params, espp_service_request_e request, ...);