blob: e65eb7d3cb59ad265cfc01215298be61489b8793 [file] [log] [blame]
Darin Petkovf7897bc2011-06-08 17:13:36 -07001// Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
2// 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 Petkov3258a812011-06-23 11:28:45 -070010#include <glib.h>
Darin Petkovf7897bc2011-06-08 17:13:36 -070011
12namespace shill {
13
Darin Petkov3258a812011-06-23 11:28:45 -070014// A GLib abstraction allowing GLib mocking in tests.
15class GLib {
Darin Petkovf7897bc2011-06-08 17:13:36 -070016 public:
Darin Petkov3258a812011-06-23 11:28:45 -070017 virtual ~GLib();
18
Darin Petkov083047b2011-06-23 20:42:48 -070019 // Converts GLib's |error| to a string message and frees the GError object.
20 virtual std::string ConvertErrorToMessage(GError *error);
21
Darin Petkov823c47e2011-06-27 16:15:35 -070022 // g_base64_decode
23 virtual guchar *Base64Decode(const gchar *text, gsize *out_len);
24 // g_base64_encode
25 virtual gchar *Base64Encode(const guchar *data, gsize len);
Darin Petkov3258a812011-06-23 11:28:45 -070026 // g_child_watch_add
Darin Petkov92c43902011-06-09 20:46:06 -070027 virtual guint ChildWatchAdd(GPid pid,
28 GChildWatchFunc function,
29 gpointer data);
Darin Petkov083047b2011-06-23 20:42:48 -070030 // g_free
31 virtual void Free(gpointer mem);
32 // g_key_file_free
33 virtual void KeyFileFree(GKeyFile *key_file);
34 // g_key_file_get_boolean
35 virtual gboolean KeyFileGetBoolean(GKeyFile *key_file,
36 const gchar *group_name,
37 const gchar *key,
38 GError **error);
39 // g_key_file_get_groups
40 virtual gchar **KeyFileGetGroups(GKeyFile *key_file,
41 gsize *length);
42 // g_key_file_get_integer
43 virtual gint KeyFileGetInteger(GKeyFile *key_file,
44 const gchar *group_name,
45 const gchar *key,
46 GError **error);
47 // g_key_file_get_string
48 virtual gchar *KeyFileGetString(GKeyFile *key_file,
49 const gchar *group_name,
50 const gchar *key,
51 GError **error);
52 // g_key_file_has_group
53 virtual gboolean KeyFileHasGroup(GKeyFile *key_file,
54 const gchar *group_name);
55 // g_key_file_load_from_file
56 virtual gboolean KeyFileLoadFromFile(GKeyFile *key_file,
57 const gchar *file,
58 GKeyFileFlags flags,
59 GError **error);
60 // g_key_file_new
61 virtual GKeyFile *KeyFileNew();
62 // g_key_file_remove_group
63 virtual void KeyFileRemoveGroup(GKeyFile *key_file,
64 const gchar *group_name,
65 GError **error);
66 // g_key_file_remove_key
67 virtual void KeyFileRemoveKey(GKeyFile *key_file,
68 const gchar *group_name,
69 const gchar *key,
70 GError **error);
71 // g_key_file_set_boolean
72 virtual void KeyFileSetBoolean(GKeyFile *key_file,
73 const gchar *group_name,
74 const gchar *key,
75 gboolean value);
76 // g_key_file_set_integer
77 virtual void KeyFileSetInteger(GKeyFile *key_file,
78 const gchar *group_name,
79 const gchar *key,
80 gint value);
81 // g_key_file_set_string
82 virtual void KeyFileSetString(GKeyFile *key_file,
83 const gchar *group_name,
84 const gchar *key,
85 const gchar *string);
86 // g_key_file_to_data
87 virtual gchar *KeyFileToData(GKeyFile *key_file,
88 gsize *length,
89 GError **error);
Darin Petkov3258a812011-06-23 11:28:45 -070090 // g_source_remove
Darin Petkov92c43902011-06-09 20:46:06 -070091 virtual gboolean SourceRemove(guint tag);
Darin Petkov3258a812011-06-23 11:28:45 -070092 // g_spawn_async
Darin Petkovf7897bc2011-06-08 17:13:36 -070093 virtual gboolean SpawnAsync(const gchar *working_directory,
94 gchar **argv,
95 gchar **envp,
96 GSpawnFlags flags,
97 GSpawnChildSetupFunc child_setup,
98 gpointer user_data,
99 GPid *child_pid,
100 GError **error);
Darin Petkov3258a812011-06-23 11:28:45 -0700101 // g_spawn_close_pid
Darin Petkov92c43902011-06-09 20:46:06 -0700102 virtual void SpawnClosePID(GPid pid);
Darin Petkov083047b2011-06-23 20:42:48 -0700103 // g_strfreev
104 virtual void Strfreev(gchar **str_array);
Darin Petkovf7897bc2011-06-08 17:13:36 -0700105};
106
107} // namespace shill
108
109#endif // SHILL_GLIB_H_