add task description to pkmon

This commit is contained in:
Richard Hughes 2007-08-13 19:37:31 +01:00
parent d4edf2c61b
commit 467f36cb2e
7 changed files with 173 additions and 67 deletions

View File

@ -49,6 +49,10 @@ pkmon_SOURCES = \
pk-debug.h \
pk-marshal.c \
pk-marshal.h \
pk-task-list.c \
pk-task-list.h \
pk-task-client.c \
pk-task-client.h \
pk-task-common.c \
pk-task-common.h \
pk-job-list.c \

View File

@ -162,10 +162,10 @@ pk_job_list_get_latest (PkJobList *jlist)
}
/**
* PK_JOB_LIST_CHANGED_cb:
* pk_job_list_changed_cb:
*/
static void
PK_JOB_LIST_CHANGED_cb (DBusGProxy *proxy,
pk_job_list_changed_cb (DBusGProxy *proxy,
GPtrArray *job_list,
PkJobList *jlist)
{
@ -234,7 +234,7 @@ pk_job_list_init (PkJobList *jlist)
dbus_g_proxy_add_signal (proxy, "JobListChanged",
struct_array_type, G_TYPE_INVALID);
dbus_g_proxy_connect_signal (proxy, "JobListChanged",
G_CALLBACK(PK_JOB_LIST_CHANGED_cb), jlist, NULL);
G_CALLBACK(pk_job_list_changed_cb), jlist, NULL);
/* force a refresh so we have valid data*/
pk_job_list_get_latest (jlist);

View File

@ -30,15 +30,15 @@
#include "pk-debug.h"
#include "pk-task-common.h"
#include "pk-job-list.h"
#include "pk-task-list.h"
/**
* pk_monitor_job_list_changed_cb:
* pk_monitor_task_list_changed_cb:
**/
static void
pk_monitor_job_list_changed_cb (PkJobList *jlist, gpointer data)
pk_monitor_task_list_changed_cb (PkTaskList *tlist, gpointer data)
{
pk_job_list_print (jlist);
pk_task_list_print (tlist);
}
/**
@ -47,9 +47,9 @@ pk_monitor_job_list_changed_cb (PkJobList *jlist, gpointer data)
int
main (int argc, char *argv[])
{
PkJobList *jlist;
PkTaskList *tlist;
gboolean ret;
GArray *job_list;
GPtrArray *task_list;
GMainLoop *loop;
if (! g_thread_supported ()) {
@ -57,27 +57,27 @@ main (int argc, char *argv[])
}
dbus_g_thread_init ();
g_type_init ();
pk_debug_init (TRUE);
pk_debug_init (FALSE);
if (!g_thread_supported ())
g_thread_init (NULL);
dbus_g_thread_init ();
jlist = pk_job_list_new ();
g_signal_connect (jlist, "job-list-changed",
G_CALLBACK (pk_monitor_job_list_changed_cb), NULL);
tlist = pk_task_list_new ();
g_signal_connect (tlist, "task-list-changed",
G_CALLBACK (pk_monitor_task_list_changed_cb), NULL);
ret = pk_job_list_refresh (jlist);
ret = pk_task_list_refresh (tlist);
if (ret == FALSE) {
g_error ("cannot refresh job list");
}
job_list = pk_job_list_get_latest (jlist);
pk_job_list_print (jlist);
task_list = pk_task_list_get_latest (tlist);
pk_task_list_print (tlist);
loop = g_main_loop_new (NULL, FALSE);
g_main_loop_run (loop);
g_object_unref (jlist);
g_object_unref (tlist);
return 0;
}

View File

@ -211,6 +211,40 @@ pk_task_client_find_packages (PkTaskClient *tclient, const gchar *search)
return TRUE;
}
/**
* pk_task_client_get_job_status:
**/
gboolean
pk_task_client_get_job_status (PkTaskClient *tclient, guint job,
PkTaskStatus *status, gchar **package)
{
gboolean ret;
gchar *status_text;
GError *error;
g_return_val_if_fail (tclient != NULL, FALSE);
g_return_val_if_fail (PK_IS_TASK_CLIENT (tclient), FALSE);
error = NULL;
ret = dbus_g_proxy_call (tclient->priv->proxy, "GetJobStatus", &error,
G_TYPE_UINT, job,
G_TYPE_INVALID,
G_TYPE_STRING, &status_text,
G_TYPE_STRING, package,
G_TYPE_INVALID);
if (error) {
pk_debug ("ERROR: %s", error->message);
g_error_free (error);
}
if (ret == FALSE) {
/* abort as the DBUS method failed */
pk_warning ("GetJobStatus failed!");
return FALSE;
}
*status = pk_task_status_from_text (status_text);
return TRUE;
}
/**
* pk_task_client_get_deps:
**/
@ -400,7 +434,7 @@ pk_task_client_finished_cb (DBusGProxy *proxy,
g_return_if_fail (PK_IS_TASK_CLIENT (tclient));
if (job == tclient->priv->job) {
exit = pk_task_common_exit_from_text (exit_text);
exit = pk_task_exit_from_text (exit_text);
pk_debug ("emit finished %i", exit);
g_signal_emit (tclient , signals [PK_TASK_CLIENT_FINISHED], 0, exit);
@ -444,7 +478,7 @@ pk_task_client_job_status_changed_cb (DBusGProxy *proxy,
g_return_if_fail (tclient != NULL);
g_return_if_fail (PK_IS_TASK_CLIENT (tclient));
status = pk_task_common_status_from_text (status_text);
status = pk_task_status_from_text (status_text);
if (job == tclient->priv->job) {
pk_debug ("emit job-status-changed %i", status);

View File

@ -23,6 +23,7 @@
#define __PK_TASK_CLIENT_H
#include <glib-object.h>
#include "pk-task-common.h"
G_BEGIN_DECLS
@ -65,6 +66,12 @@ gboolean pk_task_client_install_package (PkTaskClient *tclient,
const gchar *package);
gboolean pk_task_client_cancel_job_try (PkTaskClient *tclient);
/* not sure where this belongs... */
gboolean pk_task_client_get_job_status (PkTaskClient *tclient,
guint job,
PkTaskStatus *status,
gchar **package);
G_END_DECLS
#endif /* __PK_TASK_CLIENT_H */

View File

@ -36,50 +36,109 @@
#include "pk-task-common.h"
/**
* pk_task_common_exit_from_text:
* pk_task_exit_from_text:
*/
PkTaskExit
pk_task_common_exit_from_text (const gchar *exit)
pk_task_exit_from_text (const gchar *exit)
{
if (strcmp (exit, "success") == 0) {
return PK_TASK_COMMON_EXIT_SUCCESS;
return PK_TASK_EXIT_SUCCESS;
}
if (strcmp (exit, "failed") == 0) {
return PK_TASK_COMMON_EXIT_FAILED;
return PK_TASK_EXIT_FAILED;
}
if (strcmp (exit, "canceled") == 0) {
return PK_TASK_COMMON_EXIT_CANCELED;
return PK_TASK_EXIT_CANCELED;
}
return PK_TASK_COMMON_EXIT_UNKNOWN;
return PK_TASK_EXIT_UNKNOWN;
}
/**
* pk_task_common_status_from_text:
* pk_task_exit_to_text:
**/
PkTaskStatus
pk_task_common_status_from_text (const gchar *status)
const gchar *
pk_task_exit_to_text (PkTaskExit exit)
{
if (strcmp (status, "setup") == 0) {
return PK_TASK_COMMON_STATUS_SETUP;
const gchar *text = NULL;
switch (exit) {
case PK_TASK_EXIT_SUCCESS:
text = "success";
break;
case PK_TASK_EXIT_FAILED:
text = "failed";
break;
case PK_TASK_EXIT_CANCELED:
text = "canceled";
break;
default:
text = "unknown";
}
if (strcmp (status, "query") == 0) {
return PK_TASK_COMMON_STATUS_QUERY;
}
if (strcmp (status, "remove") == 0) {
return PK_TASK_COMMON_STATUS_REMOVE;
}
if (strcmp (status, "download") == 0) {
return PK_TASK_COMMON_STATUS_DOWNLOAD;
}
if (strcmp (status, "install") == 0) {
return PK_TASK_COMMON_STATUS_INSTALL;
}
if (strcmp (status, "update") == 0) {
return PK_TASK_COMMON_STATUS_UPDATE;
}
if (strcmp (status, "exit") == 0) {
return PK_TASK_COMMON_STATUS_EXIT;
}
return PK_TASK_COMMON_STATUS_INVALID;
return text;
}
/**
* pk_task_status_from_text:
**/
PkTaskStatus
pk_task_status_from_text (const gchar *status)
{
if (strcmp (status, "setup") == 0) {
return PK_TASK_STATUS_SETUP;
}
if (strcmp (status, "query") == 0) {
return PK_TASK_STATUS_QUERY;
}
if (strcmp (status, "remove") == 0) {
return PK_TASK_STATUS_REMOVE;
}
if (strcmp (status, "download") == 0) {
return PK_TASK_STATUS_DOWNLOAD;
}
if (strcmp (status, "install") == 0) {
return PK_TASK_STATUS_INSTALL;
}
if (strcmp (status, "update") == 0) {
return PK_TASK_STATUS_UPDATE;
}
if (strcmp (status, "exit") == 0) {
return PK_TASK_STATUS_EXIT;
}
return PK_TASK_STATUS_INVALID;
}
/**
* pk_task_status_to_text:
**/
const gchar *
pk_task_status_to_text (PkTaskStatus status)
{
const gchar *text = NULL;
switch (status) {
case PK_TASK_STATUS_SETUP:
text = "setup";
break;
case PK_TASK_STATUS_QUERY:
text = "query";
break;
case PK_TASK_STATUS_REMOVE:
text = "remove";
break;
case PK_TASK_STATUS_DOWNLOAD:
text = "download";
break;
case PK_TASK_STATUS_INSTALL:
text = "install";
break;
case PK_TASK_STATUS_UPDATE:
text = "update";
break;
case PK_TASK_STATUS_EXIT:
text = "exit";
break;
default:
text = "invalid";
}
return text;
}

View File

@ -19,8 +19,8 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef __PK_TASK_COMMON_H
#define __PK_TASK_COMMON_H
#ifndef __PK_TASK_H
#define __PK_TASK_H
#include <glib-object.h>
@ -31,27 +31,29 @@
G_BEGIN_DECLS
typedef enum {
PK_TASK_COMMON_STATUS_INVALID,
PK_TASK_COMMON_STATUS_SETUP,
PK_TASK_COMMON_STATUS_QUERY,
PK_TASK_COMMON_STATUS_REMOVE,
PK_TASK_COMMON_STATUS_DOWNLOAD,
PK_TASK_COMMON_STATUS_INSTALL,
PK_TASK_COMMON_STATUS_UPDATE,
PK_TASK_COMMON_STATUS_EXIT,
PK_TASK_COMMON_STATUS_UNKNOWN
PK_TASK_STATUS_INVALID,
PK_TASK_STATUS_SETUP,
PK_TASK_STATUS_QUERY,
PK_TASK_STATUS_REMOVE,
PK_TASK_STATUS_DOWNLOAD,
PK_TASK_STATUS_INSTALL,
PK_TASK_STATUS_UPDATE,
PK_TASK_STATUS_EXIT,
PK_TASK_STATUS_UNKNOWN
} PkTaskStatus;
typedef enum {
PK_TASK_COMMON_EXIT_SUCCESS,
PK_TASK_COMMON_EXIT_FAILED,
PK_TASK_COMMON_EXIT_CANCELED,
PK_TASK_COMMON_EXIT_UNKNOWN
PK_TASK_EXIT_SUCCESS,
PK_TASK_EXIT_FAILED,
PK_TASK_EXIT_CANCELED,
PK_TASK_EXIT_UNKNOWN
} PkTaskExit;
PkTaskExit pk_task_common_exit_from_text (const gchar *exit);
PkTaskStatus pk_task_common_status_from_text (const gchar *status);
PkTaskExit pk_task_exit_from_text (const gchar *exit);
const gchar *pk_task_exit_to_text (PkTaskExit exit);
PkTaskStatus pk_task_status_from_text (const gchar *status);
const gchar *pk_task_status_to_text (PkTaskStatus status);
G_END_DECLS
#endif /* __PK_TASK_COMMON_H */
#endif /* __PK_TASK_H */