blob: 6e8e2cdc2061fea459e5755b1ec00fd0c566a0a2 [file] [log] [blame]
Darin Petkov36a3ace2012-03-06 17:22:14 +01001// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
Darin Petkovf7897bc2011-06-08 17:13:36 -07002// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef SHILL_GLIB_H_
6#define SHILL_GLIB_H_
7
Darin Petkov083047b2011-06-23 20:42:48 -07008#include <string>
9
Darin Petkov887f2982011-07-14 16:10:17 -070010#include <gio/gio.h>
Darin Petkov3258a812011-06-23 11:28:45 -070011#include <glib.h>
Darin Petkovf7897bc2011-06-08 17:13:36 -070012
13namespace shill {
14
Darin Petkov3258a812011-06-23 11:28:45 -070015// A GLib abstraction allowing GLib mocking in tests.
16class GLib {
Darin Petkovf7897bc2011-06-08 17:13:36 -070017 public:
Darin Petkov3258a812011-06-23 11:28:45 -070018 virtual ~GLib();
19
Darin Petkov083047b2011-06-23 20:42:48 -070020 // Converts GLib's |error| to a string message and frees the GError object.
21 virtual std::string ConvertErrorToMessage(GError *error);
22
Darin Petkov823c47e2011-06-27 16:15:35 -070023 // g_base64_decode
24 virtual guchar *Base64Decode(const gchar *text, gsize *out_len);
25 // g_base64_encode
26 virtual gchar *Base64Encode(const guchar *data, gsize len);
Christopher Wiley5447d2e2013-03-19 17:46:03 -070027
28 // Thin wrappers around Base64Decode/Encode. Return true on success.
29 virtual bool B64Decode(const std::string &input, std::string *output);
30 virtual bool B64Encode(const std::string &input, std::string *output);
31
Darin Petkov887f2982011-07-14 16:10:17 -070032 // g_bus_unwatch_name
33 virtual void BusUnwatchName(guint watcher_id);
34 // g_bus_watch_name
35 virtual guint BusWatchName(GBusType bus_type,
36 const gchar *name,
37 GBusNameWatcherFlags flags,
38 GBusNameAppearedCallback name_appeared_handler,
39 GBusNameVanishedCallback name_vanished_handler,
40 gpointer user_data,
41 GDestroyNotify user_data_free_func);
Darin Petkov3258a812011-06-23 11:28:45 -070042 // g_child_watch_add
Darin Petkov92c43902011-06-09 20:46:06 -070043 virtual guint ChildWatchAdd(GPid pid,
44 GChildWatchFunc function,
45 gpointer data);
Darin Petkov083047b2011-06-23 20:42:48 -070046 // g_free
47 virtual void Free(gpointer mem);
48 // g_key_file_free
49 virtual void KeyFileFree(GKeyFile *key_file);
50 // g_key_file_get_boolean
51 virtual gboolean KeyFileGetBoolean(GKeyFile *key_file,
52 const gchar *group_name,
53 const gchar *key,
54 GError **error);
55 // g_key_file_get_groups
56 virtual gchar **KeyFileGetGroups(GKeyFile *key_file,
57 gsize *length);
58 // g_key_file_get_integer
59 virtual gint KeyFileGetInteger(GKeyFile *key_file,
60 const gchar *group_name,
61 const gchar *key,
62 GError **error);
63 // g_key_file_get_string
64 virtual gchar *KeyFileGetString(GKeyFile *key_file,
65 const gchar *group_name,
66 const gchar *key,
67 GError **error);
Darin Petkovb2841fd2011-06-30 12:54:12 -070068 // g_key_file_get_string_list
69 virtual gchar **KeyFileGetStringList(GKeyFile *key_file,
70 const gchar *group_name,
71 const gchar *key,
72 gsize *length,
73 GError **error);
Darin Petkov083047b2011-06-23 20:42:48 -070074 // g_key_file_has_group
75 virtual gboolean KeyFileHasGroup(GKeyFile *key_file,
76 const gchar *group_name);
Paul Stewarta41e38d2011-11-11 07:47:29 -080077 // g_key_file_has_key
78 virtual gboolean KeyFileHasKey(GKeyFile *key_file,
79 const gchar *group_name,
80 const gchar *key,
81 GError **error);
Darin Petkov083047b2011-06-23 20:42:48 -070082 // g_key_file_load_from_file
83 virtual gboolean KeyFileLoadFromFile(GKeyFile *key_file,
84 const gchar *file,
85 GKeyFileFlags flags,
86 GError **error);
87 // g_key_file_new
88 virtual GKeyFile *KeyFileNew();
89 // g_key_file_remove_group
90 virtual void KeyFileRemoveGroup(GKeyFile *key_file,
91 const gchar *group_name,
92 GError **error);
93 // g_key_file_remove_key
94 virtual void KeyFileRemoveKey(GKeyFile *key_file,
95 const gchar *group_name,
96 const gchar *key,
97 GError **error);
98 // g_key_file_set_boolean
99 virtual void KeyFileSetBoolean(GKeyFile *key_file,
100 const gchar *group_name,
101 const gchar *key,
102 gboolean value);
Paul Stewart5dc40aa2011-10-28 19:43:43 -0700103 // g_key_file_set_comment
104 virtual gboolean KeyFileSetComment(GKeyFile *key_file,
105 const gchar *group_name,
106 const gchar *key,
107 const gchar *comment,
108 GError **error);
Darin Petkov083047b2011-06-23 20:42:48 -0700109 // g_key_file_set_integer
110 virtual void KeyFileSetInteger(GKeyFile *key_file,
111 const gchar *group_name,
112 const gchar *key,
113 gint value);
114 // g_key_file_set_string
115 virtual void KeyFileSetString(GKeyFile *key_file,
116 const gchar *group_name,
117 const gchar *key,
Hristo Stefanoved2c28c2011-11-29 15:37:30 -0800118 const gchar *value);
Darin Petkovb2841fd2011-06-30 12:54:12 -0700119 // g_key_file_set_string_list
120 virtual void KeyFileSetStringList(GKeyFile *key_file,
121 const gchar *group_name,
122 const gchar *key,
123 const gchar * const list[],
124 gsize length);
Darin Petkov083047b2011-06-23 20:42:48 -0700125 // g_key_file_to_data
126 virtual gchar *KeyFileToData(GKeyFile *key_file,
127 gsize *length,
128 GError **error);
Darin Petkov3258a812011-06-23 11:28:45 -0700129 // g_source_remove
Darin Petkov92c43902011-06-09 20:46:06 -0700130 virtual gboolean SourceRemove(guint tag);
Darin Petkov3258a812011-06-23 11:28:45 -0700131 // g_spawn_async
Darin Petkovf7897bc2011-06-08 17:13:36 -0700132 virtual gboolean SpawnAsync(const gchar *working_directory,
133 gchar **argv,
134 gchar **envp,
135 GSpawnFlags flags,
136 GSpawnChildSetupFunc child_setup,
137 gpointer user_data,
138 GPid *child_pid,
139 GError **error);
Darin Petkov3258a812011-06-23 11:28:45 -0700140 // g_spawn_close_pid
Darin Petkov92c43902011-06-09 20:46:06 -0700141 virtual void SpawnClosePID(GPid pid);
Darin Petkov3c5e4dc2012-04-02 14:44:27 +0200142 // g_spawn_sync
143 virtual gboolean SpawnSync(const gchar *working_directory,
144 gchar **argv,
145 gchar **envp,
146 GSpawnFlags flags,
147 GSpawnChildSetupFunc child_setup,
148 gpointer user_data,
149 gchar **standard_output,
150 gchar **standard_error,
151 gint *exit_status,
152 GError **error);
Darin Petkov083047b2011-06-23 20:42:48 -0700153 // g_strfreev
154 virtual void Strfreev(gchar **str_array);
Darin Petkov887f2982011-07-14 16:10:17 -0700155 // g_type_init
156 virtual void TypeInit();
Darin Petkovf7897bc2011-06-08 17:13:36 -0700157};
158
159} // namespace shill
160
161#endif // SHILL_GLIB_H_