Blame src/dbus/abrt_problems2_service.h

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