コード例 #1
0
ファイル: task_scheduler.c プロジェクト: Narthorn/oio-sds
int
list_tasks_worker(worker_t * worker, GError ** error)
{
	struct bulk_s {
		char id[MAX_TASKID_LENGTH];
		gint64 period;
		guint8 busy;
		// used to compute the length of the structure without padding, with
		// the help of offsetof().
		gchar last[];
	} bulk;
	GHashTableIter iter;
	gpointer k, v;

	GByteArray *gba = g_byte_array_new();
	g_hash_table_iter_init(&iter, tasks);
	while (g_hash_table_iter_next(&iter, &k, &v)) {
		task_t *t;
		if (!(t = v))
			continue;
		memset(&bulk, 0, sizeof(bulk));
		g_strlcpy(bulk.id, t->id, sizeof(bulk.id));
		bulk.period = t->period;
		bulk.busy = BOOL(t->busy);
		g_byte_array_append(gba, (guint8*)&bulk, offsetof(struct bulk_s, last));
	}

	return __respond(worker, 1, gba, error);
}
コード例 #2
0
ファイル: task_scheduler.c プロジェクト: amogrid/redcurrant
int
list_tasks_worker(worker_t * worker, GError ** error)
{
	struct bulk_s {
		char id[MAX_TASKID_LENGTH];
		long next_schedule;
		gboolean busy;
		gchar last[];
	} bulk;
	GHashTableIter iter;
	gpointer k, v;

	GByteArray *gba = g_byte_array_new();
	g_hash_table_iter_init(&iter, tasks);
	while (g_hash_table_iter_next(&iter, &k, &v)) {
		task_t *t;
		if (!(t = v))
			continue;
		memset(&bulk, 0, sizeof(bulk));
		g_strlcpy(bulk.id, t->id, sizeof(bulk.id));
		bulk.next_schedule = t->next_schedule;
		bulk.busy = t->busy;
		g_byte_array_append(gba, (guint8*)&bulk, offsetof(struct bulk_s, last));
	}

	return __respond(worker, 1, gba, error);
}
コード例 #3
0
int
services_worker_list_local(worker_t * worker, GError ** error)
{
	GSList *services;
	GByteArray *gba;
	response_t response;


	memset(&response, 0, sizeof(response_t));

	services = build_local_service_info_list();
	gba = service_info_marshall_gba(services, error);
	g_slist_free(services);

	if (!gba) {
		GSETERROR(error, "service_info list serialization error");
		return __respond_error(worker, error ? *error : NULL, NULL);
	}

	return __respond(worker, 1, gba, error);
}