示例#1
0
static void gather_task(gpointer key G_GNUC_UNUSED, gpointer value, gpointer data)
{
	struct mbb_task *task = value;
	XmlTag *tag = data;

	gchar *username;
	gchar *state;
	gchar *name;

	mbb_user_lock(task->user);
	username = g_strdup(task->user->name);
	mbb_user_unlock(task->user);

	name = (gchar *) g_quark_to_string(task->name);
	state = task->run ? "run" : "stop";

	xml_tag_new_child(tag, "task",
		"id", variant_new_int(task->id),
		"name", variant_new_static_string(name),
		"sid", variant_new_int(task->sid),
		"state", variant_new_static_string(state),
		"start", variant_new_long(task->start),
		"user", variant_new_alloc_string(username)
	);
}
示例#2
0
static void gather_session(gpointer key, gpointer value, gpointer data)
{
	struct show_sessions_data *ssd;
	struct mbb_session *ss;
	gchar *username;
	XmlTag *xt;
	guint sid;

	sid = GPOINTER_TO_INT(key);
	ss = (struct mbb_session *) value;
	ssd = (struct show_sessions_data *) data;

	if (ss->user == NULL)
		username = g_strdup("*");
	else {
		mbb_user_lock(ss->user);
		username = g_strdup(ss->user->name);
		mbb_user_unlock(ss->user);
	}

	xml_tag_add_child(ssd->ans, xt = xml_tag_newc(
		"session",
		"sid", variant_new_int(sid),
		"user", variant_new_alloc_string(username),
		"peer", variant_new_string(ss->peer),
		"start", variant_new_alloc_string(g_strdup_printf("%ld", ss->start))
	));

	if (ssd->show_mtime) {
		gchar *mtime = g_strdup_printf("%ld", ss->mtime);
		xml_tag_set_attr(xt, "mtime", variant_new_alloc_string(mtime));
	}
}