• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ dbus_message_iter_next函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中dbus_message_iter_next函数的典型用法代码示例。如果您正苦于以下问题:C++ dbus_message_iter_next函数的具体用法?C++ dbus_message_iter_next怎么用?C++ dbus_message_iter_next使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了dbus_message_iter_next函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: gconf_dbus_utils_get_entries

/* Get a list of entries from an array. */
GSList *
gconf_dbus_utils_get_entries (DBusMessageIter *iter, const gchar *dir)
{
  GSList *entries;
  DBusMessageIter array_iter;

  entries = NULL;

  dbus_message_iter_recurse (iter, &array_iter);

  /* Loop through while there are structs (entries). */
  while (dbus_message_iter_get_arg_type (&array_iter) == DBUS_TYPE_STRUCT)
    {
      gchar      *key;
      GConfValue *value;
      gboolean    is_default;
      gboolean    is_writable;
      gchar      *schema_name;
      GConfEntry *entry;

      if (!utils_get_entry_values_stringified (&array_iter,
					       &key,
					       &value,
					       &is_default,
					       &is_writable,
					       &schema_name))
	break;

      entry = gconf_entry_new_nocopy (gconf_concat_dir_and_key (dir, key), value);

      gconf_entry_set_is_default (entry, is_default);
      gconf_entry_set_is_writable (entry, is_writable);
      
      if (schema_name)
	gconf_entry_set_schema_name (entry, schema_name);
      
      entries = g_slist_prepend (entries, entry);
      
      dbus_message_iter_next (&array_iter);
    }

  return entries;
}
开发者ID:SpOlErOk38,项目名称:gconf-dbus,代码行数:44,代码来源:gconf-dbus-utils.c


示例2: check_networks

static void check_networks(DBusMessageIter *array)
{
	DBusMessageIter value;

	if (dbus_message_iter_get_arg_type(array) != DBUS_TYPE_ARRAY)
		return;

	dbus_message_iter_recurse(array, &value);

	while (dbus_message_iter_get_arg_type(&value) == DBUS_TYPE_OBJECT_PATH) {
		const char *path;

		dbus_message_iter_get_basic(&value, &path);

		add_network(path);

		dbus_message_iter_next(&value);
	}
}
开发者ID:manjurajv,项目名称:connman,代码行数:19,代码来源:bluetooth_legacy.c


示例3: service_method_create_with_master_password

static DBusMessage*
service_method_create_with_master_password (GkdSecretService *self, DBusMessage *message)
{
	DBusError derr = DBUS_ERROR_INIT;
	DBusMessageIter iter, array;
	DBusMessage *reply = NULL;
	GkdSecretSecret *secret = NULL;
	GckAttributes *attrs = NULL;
	gchar *path;

	/* Parse the incoming message */
	if (!dbus_message_has_signature (message, "a{sv}(oayays)"))
		return NULL;
	if (!dbus_message_iter_init (message, &iter))
		g_return_val_if_reached (NULL);
	attrs = gck_attributes_new ();
	dbus_message_iter_recurse (&iter, &array);
	if (!gkd_secret_property_parse_all (&array, SECRET_COLLECTION_INTERFACE, attrs)) {
		gck_attributes_unref (attrs);
		return dbus_message_new_error (message, DBUS_ERROR_INVALID_ARGS,
		                               "Invalid properties argument");
	}
	dbus_message_iter_next (&iter);
	secret = gkd_secret_secret_parse (self, message, &iter, &derr);
	if (secret == NULL) {
		gck_attributes_unref (attrs);
		return gkd_secret_error_to_reply (message, &derr);
	}

	gck_attributes_add_boolean (attrs, CKA_TOKEN, TRUE);
	path = gkd_secret_create_with_secret (attrs, secret, &derr);
	gck_attributes_unref (attrs);
	gkd_secret_secret_free (secret);

	if (path == NULL)
		return gkd_secret_error_to_reply (message, &derr);

	reply = dbus_message_new_method_return (message);
	dbus_message_append_args (reply, DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID);
	g_free (path);

	return reply;
}
开发者ID:bhull2010,项目名称:mate-keyring,代码行数:43,代码来源:gkd-secret-service.c


示例4: parse_input_request

static bool parse_input_request(DBusMessageIter *arg, void *user_data)
{
	struct agent_input_data *data = user_data;
	const char *name;

	printf("parse_input_request\n");

	if (cui_dbus_get_basic(arg, DBUS_TYPE_STRING, &name) != 0)
		return FALSE;

	dbus_message_iter_next(arg);

	if (g_strcmp0(name, "Passphrase") == 0)
		data->passphrase = TRUE;
	else if (g_strcmp0(name, "WPS") == 0)
		data->wpspin = TRUE;
	else if (g_strcmp0(name, "Name") == 0)
		data->hidden = TRUE;
	else if (g_strcmp0(name, "Identity") == 0)
		data->identity = TRUE;
	else if (g_strcmp0(name, "Username") == 0)
		data->login = TRUE;
	else if (g_strcmp0(name, "PreviousPassphrase") == 0) {
		DBusMessageIter dict;
		const char **value;
		const char *type;

		dbus_message_iter_recurse(arg, &dict);

		cui_dbus_get_dict_entry_basic(&dict,
					"Type", DBUS_TYPE_STRING, &type);

		if (g_strcmp0(type, "psk") == 0)
			value = &data->previous_passphrase;
		else if (g_strcmp0(type, "wpspin") == 0)
			value = &data->previous_wpspin;

		cui_dbus_get_dict_entry_basic(&dict,
					"Value", DBUS_TYPE_STRING, &value);
	}

	return FALSE;
}
开发者ID:Jubei-Mitsuyoshi,项目名称:aaa-connman-ui,代码行数:43,代码来源:agent.c


示例5: audio_changed

static gboolean audio_changed(DBusConnection *conn,
				DBusMessage *msg, void *user_data)
{
	struct modem_data *modem = user_data;
	DBusMessageIter iter, value;
	const char *key;

	if (dbus_message_iter_init(msg, &iter) == FALSE)
		return TRUE;

	dbus_message_iter_get_basic(&iter, &key);

	dbus_message_iter_next(&iter);
	dbus_message_iter_recurse(&iter, &value);

	audio_set(modem, key, &value);

	return TRUE;
}
开发者ID:Conjuror,项目名称:ofono,代码行数:19,代码来源:huawei-audio.c


示例6: decode_string

void
decode_string(DBusMessageIter *iter, int *err, const char **pval)
{
  const char *tmp = 0;

  if( err != 0 )
  {
    if( dbus_message_iter_get_arg_type(iter) == DBUS_TYPE_STRING )
    {
      dbus_message_iter_get_basic(iter, &tmp);
      dbus_message_iter_next(iter);
    }
    else
    {
      SET_ERR;
    }
  }
  *pval = tmp;
}
开发者ID:tidatida,项目名称:alarmd,代码行数:19,代码来源:codec.c


示例7: btd_error_invalid_args

static DBusMessage *set_property(DBusConnection *conn,
					DBusMessage *msg, void *data)
{
	struct monitor *monitor = data;
	const char *property;
	DBusMessageIter iter;
	DBusMessageIter sub;
	const char *level;

	if (!dbus_message_iter_init(msg, &iter))
		return btd_error_invalid_args(msg);

	if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING)
		return btd_error_invalid_args(msg);

	dbus_message_iter_get_basic(&iter, &property);
	dbus_message_iter_next(&iter);

	if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_VARIANT)
		return btd_error_invalid_args(msg);

	dbus_message_iter_recurse(&iter, &sub);

	if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRING)
		return btd_error_invalid_args(msg);

	dbus_message_iter_get_basic(&sub, &level);

	if (g_str_equal("ImmediateAlertLevel", property)) {
		if (monitor->enabled.findme == FALSE &&
				monitor->enabled.pathloss == FALSE)
			return btd_error_not_available(msg);

		return set_immediate_alert(conn, msg, level, data);
	} else if (g_str_equal("LinkLossAlertLevel", property)) {
		if (monitor->enabled.linkloss == FALSE)
			return btd_error_not_available(msg);

		return set_link_loss_alert(conn, msg, level, data);
	}

	return btd_error_invalid_args(msg);
}
开发者ID:richardxu,项目名称:panda-a4,代码行数:43,代码来源:monitor.c


示例8: handle_signal_callback

void handle_signal_callback(gpointer no_used_key, struct SignalInfo* info, DBusMessage *msg)
{
    NOUSED(no_used_key);
    DBusMessageIter iter;
    dbus_message_iter_init(msg, &iter);

    int num = g_slist_length(info->signatures);
    JSValueRef *params = g_new(JSValueRef, num);
    for (int i=0; i<num; i++) {
	params[i] = dbus_to_js(get_global_context(), &iter);
	if (!dbus_message_iter_next(&iter)) {
	}
    }
    g_assert(info->callback != NULL);
    JSObjectCallAsFunction(get_global_context(),
	    info->callback, NULL,
	    num, params, NULL);
    g_free(params);
}
开发者ID:steafen,项目名称:dde,代码行数:19,代码来源:dbus_introspect.c


示例9: call_added

static gboolean call_added(DBusConnection *conn,
				DBusMessage *msg, void *user_data)
{
	struct modem_data *modem = user_data;
	DBusMessageIter iter, dict;
	const char *path;

	if (dbus_message_iter_init(msg, &iter) == FALSE)
		return TRUE;

	dbus_message_iter_get_basic(&iter, &path);

	dbus_message_iter_next(&iter);
	dbus_message_iter_recurse(&iter, &dict);

	create_call(modem, path, &iter);

	return TRUE;
}
开发者ID:Conjuror,项目名称:ofono,代码行数:19,代码来源:huawei-audio.c


示例10: DBG

/*
 * Phdc Manager requests to be removed from the existing list of managers.
 */
static DBusMessage *dbus_unregister_phdc_agent(DBusConnection *conn,
					DBusMessage *msg, void *data)
{
	struct near_phdc_data *mgr;
	DBusMessageIter iter;
	const char *path, *role, *sender;

	DBG("conn %p", conn);

	if (!dbus_message_iter_init(msg, &iter))
		return error_invalid_arguments(msg);

	if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_OBJECT_PATH)
		return error_invalid_arguments(msg);

	sender = dbus_message_get_sender(msg);

	dbus_message_iter_get_basic(&iter, &path);
	dbus_message_iter_next(&iter);

	if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING)
		return error_invalid_arguments(msg);

	dbus_message_iter_get_basic(&iter, &role);

	/* look for specific path */
	mgr = search_mgr_list_by_path(path);
	if (!mgr)
		return error_not_found(msg);

	DBG("%s", mgr->sender);

	if (strncmp(sender, mgr->sender, strlen(mgr->sender)))
		return error_permission_denied(msg);

	/* remove it */
	near_p2p_unregister(mgr->p2p_driver);

	g_hash_table_remove(mgr_list, mgr->p2p_driver->service_name);

	return g_dbus_create_reply(msg, DBUS_TYPE_INVALID);
}
开发者ID:justinc1985,项目名称:IntelRangeley,代码行数:45,代码来源:phdc.c


示例11: ring_callback

static void ring_callback (plugin_t *p, DBusMessage *msg, void *data)
{
	at_modem_t *m = data;
	DBusMessageIter call;

	/* Skip call object path */
	if (!dbus_message_iter_init (msg, &call)
	 || dbus_message_iter_get_arg_type (&call) != DBUS_TYPE_OBJECT_PATH)
		return;
	dbus_message_iter_next (&call);

	/* Only care about incoming or waiting calls */
	const char *str = ofono_dict_find_string (&call, "State");
	if (str == NULL)
		return;
	if (!strcmp (str, "incoming"))
		incoming_call (p, &call, m);
	if (!strcmp (str, "waiting"))
		waiting_call (p, &call, m);
}
开发者ID:maemo-foss,项目名称:meego-cellular-matd,代码行数:20,代码来源:voicecall.c


示例12: decode_bool

void
decode_bool(DBusMessageIter *iter, int *err, int *pval)
{
  dbus_bool_t  val = 0;

  if( *err == 0 )
  {
    if( dbus_message_iter_get_arg_type(iter) == DBUS_TYPE_BOOLEAN )
    {
      dbus_message_iter_get_basic(iter, &val);
      dbus_message_iter_next(iter);
    }
    else
    {
      SET_ERR;
    }
  }

  *pval = (val != 0);
}
开发者ID:tidatida,项目名称:alarmd,代码行数:20,代码来源:codec.c


示例13: handleDD

void handleDD(DBusMessage *msg, double *a, double *b) {
  DBusMessageIter args;

  if (!dbus_message_iter_init(msg, &args)) {
    fprintf(stderr, ERR_ARGS_EMPTY);
  } else if (DBUS_TYPE_DOUBLE != dbus_message_iter_get_arg_type(&args)) {
    fprintf(stderr, ERR_ARG_TYPE_D);
  }

  dbus_message_iter_get_basic(&args, a);


  if (!dbus_message_iter_next(&args)) {
    fprintf(stderr, ERR_ARGS_MISSING);
  } else if (DBUS_TYPE_DOUBLE != dbus_message_iter_get_arg_type(&args)) {
    fprintf(stderr, ERR_ARG_TYPE_D);
  }

  dbus_message_iter_get_basic(&args, b);
}
开发者ID:laCour,项目名称:sunrise,代码行数:20,代码来源:main.cpp


示例14: DemarshalSetPropertyValue

/**
 * DemarshalSetPropertyValue() extracts the new property value from a
 * org.freedesktop.DBus.Properties.Set method call message.
 *
 * @return int VLC_SUCCESS on success
 * @param DBusMessage *p_msg a org.freedesktop.DBus.Properties.Set method call
 * @param void *p_arg placeholder for the demarshalled value
 */
int DemarshalSetPropertyValue( DBusMessage *p_msg, void *p_arg )
{
    int  i_type;
    bool b_valid_input = FALSE;
    DBusMessageIter in_args, variant;
    dbus_message_iter_init( p_msg, &in_args );

    do
    {
        i_type = dbus_message_iter_get_arg_type( &in_args );
        if( DBUS_TYPE_VARIANT == i_type )
        {
            dbus_message_iter_recurse( &in_args, &variant );
            dbus_message_iter_get_basic( &variant, p_arg );
            b_valid_input = TRUE;
        }
    } while( dbus_message_iter_next( &in_args ) );

    return b_valid_input ? VLC_SUCCESS : VLC_EGENERIC;
}
开发者ID:vlcchina,项目名称:vlc-player-experimental,代码行数:28,代码来源:dbus.c


示例15: getDouble

t_ilm_bool getDouble(t_ilm_message message, t_ilm_float* value)
{
    t_ilm_bool returnValue = ILM_FALSE;
    dbusmessage* msg = (dbusmessage*)message;
    t_ilm_int type = dbus_message_iter_get_arg_type(&msg->iter);

    if (DBUS_TYPE_DOUBLE == type)
    {
        dbus_message_iter_get_basic(&msg->iter, value);
        dbus_message_iter_next(&msg->iter);
        returnValue = ILM_TRUE;
    }
    else
    {
        printf("ERROR: expected: DBUS_TYPE_DOUBLE,received ");
        printTypeName(type);
    }

    return returnValue;
}
开发者ID:Airtau,项目名称:genivi,代码行数:20,代码来源:double.c


示例16: get_pim_next_rp_static

u_int32 get_pim_next_rp_static(struct pim_rp_set *info)
{
    DBusMessage *query = NULL, *reply = NULL;
    DBusError err = {0};
    u_int32 op_ret = 0;
    char *ifname;
    DBusMessageIter iter;

    query = dbus_message_new_method_call(PIMD_DBUS_BUSNAME, 
    							PIMD_DBUS_OBJPATH, 
    							PIMD_DBUS_INTERFACE, 
    							PIMD_DBUS_INTERFACE_METHOD_SHOW_RP_STATIC);
    dbus_error_init(&err);
    dbus_message_append_args(query,
    					DBUS_TYPE_UINT32, &info->rp_addr,
    					DBUS_TYPE_UINT32, &info->grp_addr,
    					DBUS_TYPE_INVALID);
    reply = dbus_connection_send_with_reply_and_block(dcli_dbus_connection,query,-1, &err);
    dbus_message_unref(query);
    if (NULL == reply) {
        printf("failed get reply.\n");
    if (dbus_error_is_set(&err)) {
    	dbus_error_free(&err);
    }
        return 1;
    }
    dbus_message_iter_init(reply,&iter);
    dbus_message_iter_get_basic(&iter,&op_ret);
    if (0==op_ret || 4==op_ret){
        if(0==op_ret){
            dbus_message_iter_next(&iter);	
            dbus_message_iter_get_basic(&iter,&info->rp_addr);
            dbus_message_iter_next(&iter);	
            dbus_message_iter_get_basic(&iter,&ifname);
            strcpy(info->iif_name, ifname);
        }
        dbus_message_iter_next(&iter);	
        dbus_message_iter_get_basic(&iter,&info->grp_addr);
        dbus_message_iter_next(&iter);	
        dbus_message_iter_get_basic(&iter,&info->masklen);
        dbus_message_iter_next(&iter);	
        dbus_message_iter_get_basic(&iter,&info->priority);
        dbus_message_iter_next(&iter);	
        dbus_message_iter_get_basic(&iter,&info->holdtime);
    }

    dbus_message_unref(reply);
    return op_ret;
}
开发者ID:ECYBTech,项目名称:chanos,代码行数:49,代码来源:man_pim.c


示例17: bt_property_changed

static void bt_property_changed(DBusMessage * msg, gchar *type)
{
    DBusMessageIter msg_i, var_i;
    const gchar *path = dbus_message_get_path(msg); 
    const gchar *property_name;
    const gchar *val;

    /* OHM_DEBUG(DBG_BT, "bluetooth property changed!\n\n"); */
    dbus_message_iter_init(msg, &msg_i);

    if (dbus_message_iter_get_arg_type(&msg_i) != DBUS_TYPE_STRING) {
        return;
    }

    /* get the name of the property */
    dbus_message_iter_get_basic(&msg_i, &property_name);

    if (strcmp(property_name, "State") == 0) {

        dbus_message_iter_next(&msg_i);

        if (dbus_message_iter_get_arg_type(&msg_i) != DBUS_TYPE_VARIANT) {
            /* OHM_DEBUG(DBG_BT, "The property value is not variant\n"); */
            return;
        }

        dbus_message_iter_recurse(&msg_i, &var_i);

        if (dbus_message_iter_get_arg_type(&var_i) != DBUS_TYPE_STRING) {
            OHM_DEBUG(DBG_BT, "The variant value is not string\n");
            return;
        }

        dbus_message_iter_get_basic(&var_i, &val);

        if (val) 
            bt_state_changed(type, path, val);
    }

    return;
}
开发者ID:foolab,项目名称:ohm-plugins-misc,代码行数:41,代码来源:bluetooth.c


示例18: printf

static DBusMessage *agent_request_input_method(DBusConnection *dbus_cnx,
						DBusMessage *msg, void *data)
{
	struct agent_input_data arg_data;
	DBusMessageIter arg;
	const char *path;

	printf("agent_request_input_method\n");

	if (agent_if == NULL || agent_if->input_cb == NULL)
		goto error;

	memset(&arg_data, 0, sizeof(struct agent_input_data));

	if (dbus_message_iter_init(msg, &arg) == FALSE)
		goto error;

	if (cui_dbus_get_basic(&arg, DBUS_TYPE_OBJECT_PATH, &path) != 0)
		goto error;

	dbus_message_iter_next(&arg);

	cui_dbus_foreach_dict_entry(&arg, parse_input_request, &arg_data);

	if (arg_data.hidden == FALSE &&
				arg_data.identity == FALSE &&
				arg_data.passphrase == FALSE &&
				arg_data.login == FALSE)
		goto error;

	agent_if->pending_reply = dbus_message_ref(msg);
	agent_if->input_cb(path, arg_data.hidden, arg_data.identity,
			arg_data.passphrase, arg_data.previous_passphrase,
			arg_data.wpspin, arg_data.previous_wpspin,
			arg_data.login);

	return NULL;

error:
	return g_dbus_create_error(msg, CONNMAN_ERROR ".Canceled", NULL);
}
开发者ID:Jubei-Mitsuyoshi,项目名称:aaa-connman-ui,代码行数:41,代码来源:agent.c


示例19: dbus_message_iter_init

static DBusMessage *agent_request_input(DBusConnection *connection,
		DBusMessage *message, void *user_data)
{
	struct agent_data *request = user_data;
	DBusMessageIter iter, dict;
	char *service, *str;

	if (handle_message(message, request, agent_request_input) == false)
		return NULL;

	dbus_message_iter_init(message, &iter);

	dbus_message_iter_get_basic(&iter, &str);
	service = strip_path(str);

	dbus_message_iter_next(&iter);
	dbus_message_iter_recurse(&iter, &dict);

	__connmanctl_save_rl();
	if (strcmp(request->interface, AGENT_INTERFACE) == 0)
		fprintf(stdout, "Agent RequestInput %s\n", service);
	else
		fprintf(stdout, "VPN Agent RequestInput %s\n", service);
	__connmanctl_dbus_print(&dict, "  ", " = ", "\n");
	fprintf(stdout, "\n");

	parse_agent_request(request, &iter);

	request->reply = dbus_message_new_method_return(message);
	dbus_message_iter_init_append(request->reply, &request->iter);

	dbus_message_iter_open_container(&request->iter, DBUS_TYPE_ARRAY,
                        DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING
                        DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING
                        DBUS_DICT_ENTRY_END_CHAR_AS_STRING,
			&request->dict);

	request_input_next(request);

	return NULL;
}
开发者ID:Drakey83,项目名称:steamlink-sdk,代码行数:41,代码来源:agent.c


示例20: iter_append_iter

static void iter_append_iter(DBusMessageIter *base, DBusMessageIter *iter)
{
	int type;

	type = dbus_message_iter_get_arg_type(iter);

	if (dbus_type_is_basic(type)) {
		const void *value;

		dbus_message_iter_get_basic(iter, &value);
		dbus_message_iter_append_basic(base, type, &value);
	} else if (dbus_type_is_container(type)) {
		DBusMessageIter iter_sub, base_sub;
		char *sig;

		dbus_message_iter_recurse(iter, &iter_sub);

		switch (type) {
		case DBUS_TYPE_ARRAY:
		case DBUS_TYPE_VARIANT:
			sig = dbus_message_iter_get_signature(&iter_sub);
			break;
		default:
			sig = NULL;
			break;
		}

		dbus_message_iter_open_container(base, type, sig, &base_sub);

		if (sig != NULL)
			dbus_free(sig);

		while (dbus_message_iter_get_arg_type(&iter_sub) !=
							DBUS_TYPE_INVALID) {
			iter_append_iter(&base_sub, &iter_sub);
			dbus_message_iter_next(&iter_sub);
		}

		dbus_message_iter_close_container(base, &base_sub);
	}
}
开发者ID:AwxiVYTHUIiMOol,项目名称:bluez,代码行数:41,代码来源:client.c



注:本文中的dbus_message_iter_next函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ dbus_message_iter_recurse函数代码示例发布时间:2022-05-30
下一篇:
C++ dbus_message_iter_init_append函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap