|
Packit |
8ea169 |
/*
|
|
Packit |
8ea169 |
Copyright (C) 2015 ABRT team
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
This program is free software; you can redistribute it and/or modify
|
|
Packit |
8ea169 |
it under the terms of the GNU General Public License as published by
|
|
Packit |
8ea169 |
the Free Software Foundation; either version 2 of the License, or
|
|
Packit |
8ea169 |
(at your option) any later version.
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
This program is distributed in the hope that it will be useful,
|
|
Packit |
8ea169 |
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
8ea169 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
Packit |
8ea169 |
GNU General Public License for more details.
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
You should have received a copy of the GNU General Public License along
|
|
Packit |
8ea169 |
with this program; if not, write to the Free Software Foundation, Inc.,
|
|
Packit |
8ea169 |
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
------------------------------------------------------------------------------
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
This file declares functions for org.freedesktop.Problems2 interface.
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
AbrtP2Service is a central point. All other components should communicate to
|
|
Packit |
8ea169 |
each other via AbrtP2Service as much as possible.
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
AbrtP2Service manages all D-Bus objects. It register new object paths in
|
|
Packit |
8ea169 |
D-Bus daemon. D-Bus objects are hidden behind AbrtP2Object that links D-Bus
|
|
Packit |
8ea169 |
path with an implementation - node (real object -> Entry, Session, Task) .
|
|
Packit |
8ea169 |
*/
|
|
Packit |
8ea169 |
#ifndef ABRT_PROBLEMS2_SERVICE_H
|
|
Packit |
8ea169 |
#define ABRT_PROBLEMS2_SERVICE_H
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
#include <glib-object.h>
|
|
Packit |
8ea169 |
#include <gio/gio.h>
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
#define ABRT_P2_BUS "org.freedesktop.problems"
|
|
Packit |
8ea169 |
#define ABRT_P2_PATH "/org/freedesktop/Problems2"
|
|
Packit |
8ea169 |
#define ABRT_P2_NS "org.freedesktop.Problems2"
|
|
Packit |
8ea169 |
#define ABRT_P2_NS_MEMBER(name) ABRT_P2_NS"."name
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
/*
|
|
Packit |
8ea169 |
* D-Bus object representation
|
|
Packit |
8ea169 |
*/
|
|
Packit |
8ea169 |
typedef struct _AbrtP2Object AbrtP2Object;
|
|
Packit |
8ea169 |
const char *abrt_p2_object_path(AbrtP2Object *obj);
|
|
Packit |
8ea169 |
void *abrt_p2_object_get_node(AbrtP2Object *obj);
|
|
Packit |
8ea169 |
void abrt_p2_object_destroy(AbrtP2Object *obj);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
/*
|
|
Packit |
8ea169 |
* Service - something like object manager
|
|
Packit |
8ea169 |
*/
|
|
Packit |
8ea169 |
#define TYPE_ABRT_P2_SERVICE abrt_p2_service_get_type ()
|
|
Packit |
8ea169 |
G_DECLARE_FINAL_TYPE(AbrtP2Service, abrt_p2_service, ABRT_P2, SERVICE, GObject)
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
AbrtP2Service *abrt_p2_service_new(GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
int abrt_p2_service_register_objects(AbrtP2Service *service,
|
|
Packit |
8ea169 |
GDBusConnection *connection,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
const char *abrt_p2_service_session_path(AbrtP2Service *service,
|
|
Packit |
8ea169 |
const char *caller,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
uid_t abrt_p2_service_caller_uid(AbrtP2Service *service,
|
|
Packit |
8ea169 |
const char *caller,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
uid_t abrt_p2_service_caller_real_uid(AbrtP2Service *service,
|
|
Packit |
8ea169 |
const char *caller,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
char *abrt_p2_service_save_problem(AbrtP2Service *service,
|
|
Packit |
8ea169 |
GVariant *problem_info,
|
|
Packit |
8ea169 |
GUnixFDList *fd_list,
|
|
Packit |
8ea169 |
uid_t caller_uid,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
int abrt_p2_service_remove_problem(AbrtP2Service *service,
|
|
Packit |
8ea169 |
const char *entry_path,
|
|
Packit |
8ea169 |
uid_t caller_uid,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
GVariant *abrt_p2_service_entry_problem_data(AbrtP2Service *service,
|
|
Packit |
8ea169 |
const char *entry_path,
|
|
Packit |
8ea169 |
uid_t caller_uid,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
enum {
|
|
Packit |
8ea169 |
ABRT_P2_SERVICE_ENTRY_LOOKUP_NOFLAGS = 0x0, ///< return with error if not found
|
|
Packit |
8ea169 |
ABRT_P2_SERVICE_ENTRY_LOOKUP_OPTIONAL = 0x1, ///< return NULL if not found
|
|
Packit |
8ea169 |
} AbrtP2ServiceEntryLookupFlag;
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
AbrtP2Object *abrt_p2_service_get_entry_for_problem(AbrtP2Service *service,
|
|
Packit |
8ea169 |
const char *problem_id,
|
|
Packit |
8ea169 |
int flags,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
struct _AbrtP2Entry;
|
|
Packit |
8ea169 |
AbrtP2Object *abrt_p2_service_register_entry(AbrtP2Service *service,
|
|
Packit |
8ea169 |
struct _AbrtP2Entry *entry,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
void abrt_p2_service_notify_entry_object(AbrtP2Service *service,
|
|
Packit |
8ea169 |
AbrtP2Object *obj,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
int abrt_p2_service_user_can_create_new_problem(AbrtP2Service *service,
|
|
Packit |
8ea169 |
uid_t uid);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
GVariant *abrt_p2_service_new_problem(AbrtP2Service *service,
|
|
Packit |
8ea169 |
AbrtP2Object *session_obj,
|
|
Packit |
8ea169 |
GVariant *problem_info,
|
|
Packit |
8ea169 |
gint32 flags,
|
|
Packit |
8ea169 |
uid_t caller_uid,
|
|
Packit |
8ea169 |
GUnixFDList *fd_list,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
void abrt_p2_service_new_problem_async(AbrtP2Service *service,
|
|
Packit |
8ea169 |
GVariant *problem_info,
|
|
Packit |
8ea169 |
gint32 flags,
|
|
Packit |
8ea169 |
uid_t caller_uid,
|
|
Packit |
8ea169 |
GUnixFDList *fd_list,
|
|
Packit |
8ea169 |
GCancellable *cancellable,
|
|
Packit |
8ea169 |
GAsyncReadyCallback callback,
|
|
Packit |
8ea169 |
gpointer user_data);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
GVariant *abrt_p2_service_new_problem_finish(AbrtP2Service *service,
|
|
Packit |
8ea169 |
GAsyncResult *result,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
GVariant *abrt_p2_service_callers_session(AbrtP2Service *service,
|
|
Packit |
8ea169 |
const char *caller,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
/*
|
|
Packit |
8ea169 |
* GetProblems
|
|
Packit |
8ea169 |
*/
|
|
Packit |
8ea169 |
typedef enum
|
|
Packit |
8ea169 |
{
|
|
Packit |
8ea169 |
ABRT_P2_SERVICE_GET_PROBLEM_FLAGS_NONE = 0x0,
|
|
Packit |
8ea169 |
ABRT_P2_SERVICE_GET_PROBLEM_FLAGS_FOREIGN = 0x1,
|
|
Packit |
8ea169 |
ABRT_P2_SERVICE_GET_PROBLEM_FLAGS_NEW = 0x2,
|
|
Packit |
8ea169 |
} AbrtP2ServiceGetProblemsFlags;
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
GVariant *abrt_p2_service_get_problems(AbrtP2Service *service,
|
|
Packit |
8ea169 |
uid_t caller_uid,
|
|
Packit |
8ea169 |
gint32 flags,
|
|
Packit |
8ea169 |
GVariant *options,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
GVariant *abrt_p2_service_delete_problems(AbrtP2Service *service,
|
|
Packit |
8ea169 |
GVariant *entries,
|
|
Packit |
8ea169 |
uid_t caller_uid,
|
|
Packit |
8ea169 |
GError **error);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
/* Configuration option: D-Bus maximum size of a message, to avoid magical
|
|
Packit |
8ea169 |
* disappearing of the service - if you exceed this limit
|
|
Packit |
8ea169 |
* D-Bus daemon disconnects you from the bus
|
|
Packit |
8ea169 |
*/
|
|
Packit |
8ea169 |
long abrt_p2_service_max_message_size(AbrtP2Service *service);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
void abrt_p2_service_set_max_message_size(AbrtP2Service *service,
|
|
Packit |
8ea169 |
long max_message_size);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
/* Configuration option: D-Bus maximum unix fds in a message, to avoid magical
|
|
Packit |
8ea169 |
* disappearing of the service - if you exceed this limit
|
|
Packit |
8ea169 |
* D-Bus daemon disconnects you from the bus
|
|
Packit |
8ea169 |
*/
|
|
Packit |
8ea169 |
long abrt_p2_service_max_message_unix_fds(AbrtP2Service *service);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
void abrt_p2_service_set_max_message_unix_fds(AbrtP2Service *service,
|
|
Packit |
8ea169 |
long max_message_unix_fds);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
/* Configuration option: maximal number of connected clients per user */
|
|
Packit |
8ea169 |
unsigned abrt_p2_service_user_clients_limit(AbrtP2Service *service,
|
|
Packit |
8ea169 |
uid_t uid);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
void abrt_p2_service_set_user_clients_limit(AbrtP2Service *service,
|
|
Packit |
8ea169 |
uid_t uid,
|
|
Packit |
8ea169 |
unsigned limit);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
/* Configuration option: elements count limit */
|
|
Packit |
8ea169 |
unsigned abrt_p2_service_elements_limit(AbrtP2Service *service,
|
|
Packit |
8ea169 |
uid_t uid);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
void abrt_p2_service_set_elements_limit(AbrtP2Service *service,
|
|
Packit |
8ea169 |
uid_t uid,
|
|
Packit |
8ea169 |
unsigned limit);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
/* Configuration option: data size limit */
|
|
Packit |
8ea169 |
off_t abrt_p2_service_data_size_limit(AbrtP2Service *service,
|
|
Packit |
8ea169 |
uid_t uid);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
void abrt_p2_service_set_data_size_limit(AbrtP2Service *service,
|
|
Packit |
8ea169 |
uid_t uid,
|
|
Packit |
8ea169 |
off_t limit);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
/* Configuration option: user problems limit */
|
|
Packit |
8ea169 |
unsigned abrt_p2_service_user_problems_limit(AbrtP2Service *service,
|
|
Packit |
8ea169 |
uid_t uid);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
void abrt_p2_service_set_user_problems_limit(AbrtP2Service *service,
|
|
Packit |
8ea169 |
uid_t uid,
|
|
Packit |
8ea169 |
unsigned limit);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
/* Configuration option: throttling magnitude */
|
|
Packit |
8ea169 |
unsigned abrt_p2_service_new_problem_throttling_magnitude(AbrtP2Service *service,
|
|
Packit |
8ea169 |
uid_t uid);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
void abrt_p2_service_set_new_problem_throttling_magnitude(AbrtP2Service *service,
|
|
Packit |
8ea169 |
uid_t uid,
|
|
Packit |
8ea169 |
unsigned limit);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
/* Configuration option: new problems batch */
|
|
Packit |
8ea169 |
unsigned abrt_p2_service_new_problems_batch(AbrtP2Service *service,
|
|
Packit |
8ea169 |
uid_t uid);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
void abrt_p2_service_set_new_problems_batch(AbrtP2Service *service,
|
|
Packit |
8ea169 |
uid_t uid,
|
|
Packit |
8ea169 |
unsigned limit);
|
|
Packit |
8ea169 |
|
|
Packit |
8ea169 |
#endif/*ABRT_PROBLEMS2_SERVICE_H*/
|