1 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*-
2  *
3  * Copyright (C) 2007-2010 David Zeuthen <zeuthen@gmail.com>
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program; if not, write to the Free Software
17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18  *
19  */
20 
21 #ifndef __UDISKS_DAEMON_H__
22 #define __UDISKS_DAEMON_H__
23 
24 #include "config.h"
25 #include "udisksdaemontypes.h"
26 
27 G_BEGIN_DECLS
28 
29 #define UDISKS_TYPE_DAEMON         (udisks_daemon_get_type ())
30 #define UDISKS_DAEMON(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), UDISKS_TYPE_DAEMON, UDisksDaemon))
31 #define UDISKS_IS_DAEMON(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), UDISKS_TYPE_DAEMON))
32 
33 GType                     udisks_daemon_get_type             (void) G_GNUC_CONST;
34 UDisksDaemon             *udisks_daemon_new                  (GDBusConnection *connection,
35                                                               gboolean         disable_modules,
36                                                               gboolean         force_load_modules,
37                                                               gboolean         uninstalled,
38                                                               gboolean         enable_tcrypt);
39 GDBusConnection          *udisks_daemon_get_connection        (UDisksDaemon    *daemon);
40 GDBusObjectManagerServer *udisks_daemon_get_object_manager    (UDisksDaemon    *daemon);
41 UDisksMountMonitor       *udisks_daemon_get_mount_monitor     (UDisksDaemon    *daemon);
42 UDisksCrypttabMonitor    *udisks_daemon_get_crypttab_monitor  (UDisksDaemon    *daemon);
43 #ifdef HAVE_LIBMOUNT_UTAB
44 UDisksUtabMonitor        *udisks_daemon_get_utab_monitor      (UDisksDaemon    *daemon);
45 #endif
46 UDisksLinuxProvider      *udisks_daemon_get_linux_provider    (UDisksDaemon    *daemon);
47 PolkitAuthority          *udisks_daemon_get_authority         (UDisksDaemon    *daemon);
48 UDisksState              *udisks_daemon_get_state             (UDisksDaemon    *daemon);
49 UDisksModuleManager      *udisks_daemon_get_module_manager    (UDisksDaemon    *daemon);
50 UDisksConfigManager      *udisks_daemon_get_config_manager    (UDisksDaemon    *daemon);
51 gboolean                  udisks_daemon_get_disable_modules   (UDisksDaemon    *daemon);
52 gboolean                  udisks_daemon_get_force_load_modules(UDisksDaemon    *daemon);
53 gboolean                  udisks_daemon_get_uninstalled       (UDisksDaemon    *daemon);
54 gboolean                  udisks_daemon_get_enable_tcrypt     (UDisksDaemon    *daemon);
55 const gchar              *udisks_daemon_get_uuid              (UDisksDaemon    *daemon);
56 
57 /**
58  * UDisksDaemonWaitFunc:
59  * @daemon: A #UDisksDaemon.
60  * @user_data: The #gpointer passed to udisks_daemon_wait_for_object_sync().
61  *
62  * Type for callback function used with udisks_daemon_wait_for_object_sync().
63  *
64  * Returns: (transfer full): %NULL if the object to wait for was not found, otherwise a full reference to a #UDisksObject.
65  */
66 typedef gpointer (*UDisksDaemonWaitFuncGeneric) (UDisksDaemon *daemon,
67                                                  gpointer      user_data);
68 typedef UDisksObject *(*UDisksDaemonWaitFuncObject) (UDisksDaemon *daemon,
69                                                      gpointer      user_data);
70 typedef UDisksObject **(*UDisksDaemonWaitFuncObjects) (UDisksDaemon *daemon,
71                                                        gpointer      user_data);
72 
73 UDisksObject             *udisks_daemon_wait_for_object_sync  (UDisksDaemon              *daemon,
74                                                                UDisksDaemonWaitFuncObject wait_func,
75                                                                gpointer                   user_data,
76                                                                GDestroyNotify             user_data_free_func,
77                                                                guint                      timeout_seconds,
78                                                                GError                   **error);
79 
80 UDisksObject             **udisks_daemon_wait_for_objects_sync  (UDisksDaemon                *daemon,
81                                                                  UDisksDaemonWaitFuncObjects  wait_func,
82                                                                  gpointer                     user_data,
83                                                                  GDestroyNotify               user_data_free_func,
84                                                                  guint                        timeout_seconds,
85                                                                  GError                       **error);
86 
87 gboolean             udisks_daemon_wait_for_object_to_disappear_sync (UDisksDaemon               *daemon,
88                                                                       UDisksDaemonWaitFuncObject  wait_func,
89                                                                       gpointer                    user_data,
90                                                                       GDestroyNotify              user_data_free_func,
91                                                                       guint                       timeout_seconds,
92                                                                       GError                      **error);
93 
94 GList                    *udisks_daemon_get_objects           (UDisksDaemon         *daemon);
95 
96 UDisksObject             *udisks_daemon_find_block            (UDisksDaemon         *daemon,
97                                                                dev_t                 block_device_number);
98 
99 UDisksObject             *udisks_daemon_find_block_by_device_file (UDisksDaemon *daemon,
100                                                                    const gchar  *device_file);
101 
102 UDisksObject             *udisks_daemon_find_block_by_sysfs_path (UDisksDaemon *daemon,
103                                                                   const gchar  *sysfs_path);
104 
105 UDisksObject             *udisks_daemon_find_object           (UDisksDaemon         *daemon,
106                                                                const gchar          *object_path);
107 
108 UDisksBaseJob            *udisks_daemon_launch_simple_job     (UDisksDaemon    *daemon,
109                                                                UDisksObject    *object,
110                                                                const gchar     *job_operation,
111                                                                uid_t            job_started_by_uid,
112                                                                GCancellable    *cancellable);
113 UDisksBaseJob            *udisks_daemon_launch_spawned_job    (UDisksDaemon    *daemon,
114                                                                UDisksObject    *object,
115                                                                const gchar     *job_operation,
116                                                                uid_t            job_started_by_uid,
117                                                                GCancellable    *cancellable,
118                                                                uid_t            run_as_uid,
119                                                                uid_t            run_as_euid,
120                                                                const gchar     *input_string,
121                                                                const gchar     *command_line_format,
122                                                                ...) G_GNUC_PRINTF (9, 10);
123 gboolean                  udisks_daemon_launch_spawned_job_sync (UDisksDaemon    *daemon,
124                                                                  UDisksObject    *object,
125                                                                  const gchar     *job_operation,
126                                                                  uid_t            job_started_by_uid,
127                                                                  GCancellable    *cancellable,
128                                                                  uid_t            run_as_uid,
129                                                                  uid_t            run_as_euid,
130                                                                  gint            *out_status,
131                                                                  gchar          **out_message,
132                                                                  const gchar     *input_string,
133                                                                  const gchar     *command_line_format,
134                                                                  ...) G_GNUC_PRINTF (11, 12);
135 UDisksBaseJob            *udisks_daemon_launch_spawned_job_gstring    (UDisksDaemon    *daemon,
136                                                                UDisksObject    *object,
137                                                                const gchar     *job_operation,
138                                                                uid_t            job_started_by_uid,
139                                                                GCancellable    *cancellable,
140                                                                uid_t            run_as_uid,
141                                                                uid_t            run_as_euid,
142                                                                GString         *input_string,
143                                                                const gchar     *command_line_format,
144                                                                ...) G_GNUC_PRINTF (9, 10);
145 gboolean                  udisks_daemon_launch_spawned_job_gstring_sync (UDisksDaemon    *daemon,
146                                                                  UDisksObject    *object,
147                                                                  const gchar     *job_operation,
148                                                                  uid_t            job_started_by_uid,
149                                                                  GCancellable    *cancellable,
150                                                                  uid_t            run_as_uid,
151                                                                  uid_t            run_as_euid,
152                                                                  gint            *out_status,
153                                                                  gchar          **out_message,
154                                                                  GString         *input_string,
155                                                                  const gchar     *command_line_format,
156                                                                  ...) G_GNUC_PRINTF (11, 12);
157 UDisksBaseJob            *udisks_daemon_launch_threaded_job   (UDisksDaemon          *daemon,
158                                                                UDisksObject          *object,
159                                                                const gchar           *job_operation,
160                                                                uid_t                  job_started_by_uid,
161                                                                UDisksThreadedJobFunc  job_func,
162                                                                gpointer               user_data,
163                                                                GDestroyNotify         user_data_free_func,
164                                                                GCancellable          *cancellable);
165 
166 gboolean                  udisks_daemon_launch_threaded_job_sync (UDisksDaemon          *daemon,
167                                                                   UDisksObject          *object,
168                                                                   const gchar           *job_operation,
169                                                                   uid_t                  job_started_by_uid,
170                                                                   UDisksThreadedJobFunc  job_func,
171                                                                   gpointer               user_data,
172                                                                   GDestroyNotify         user_data_free_func,
173                                                                   GCancellable          *cancellable,
174                                                                   GError               **error);
175 
176 void                      udisks_bd_thread_set_progress_for_job  (UDisksJob             *job);
177 void                      udisks_bd_thread_disable_progress      (void);
178 
179 gchar                    *udisks_daemon_get_parent_for_tracking  (UDisksDaemon          *daemon,
180                                                                   const gchar           *path,
181                                                                   gchar                **uuid);
182 
183 G_END_DECLS
184 
185 #endif /* __UDISKS_DAEMON_H__ */
186