blob: 186c075cd72102aaa079c53e30262040a750a880 [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 Petkov3258a812011-06-23 11:28:45 -070022 // g_child_watch_add
Darin Petkov92c43902011-06-09 20:46:06 -070023 virtual guint ChildWatchAdd(GPid pid,
24 GChildWatchFunc function,
25 gpointer data);
Darin Petkov083047b2011-06-23 20:42:48 -070026 // g_free
27 virtual void Free(gpointer mem);
28 // g_key_file_free
29 virtual void KeyFileFree(GKeyFile *key_file);
30 // g_key_file_get_boolean
31 virtual gboolean KeyFileGetBoolean(GKeyFile *key_file,
32 const gchar *group_name,
33 const gchar *key,
34 GError **error);
35 // g_key_file_get_groups
36 virtual gchar **KeyFileGetGroups(GKeyFile *key_file,
37 gsize *length);
38 // g_key_file_get_integer
39 virtual gint KeyFileGetInteger(GKeyFile *key_file,
40 const gchar *group_name,
41 const gchar *key,
42 GError **error);
43 // g_key_file_get_string
44 virtual gchar *KeyFileGetString(GKeyFile *key_file,
45 const gchar *group_name,
46 const gchar *key,
47 GError **error);
48 // g_key_file_has_group
49 virtual gboolean KeyFileHasGroup(GKeyFile *key_file,
50 const gchar *group_name);
51 // g_key_file_load_from_file
52 virtual gboolean KeyFileLoadFromFile(GKeyFile *key_file,
53 const gchar *file,
54 GKeyFileFlags flags,
55 GError **error);
56 // g_key_file_new
57 virtual GKeyFile *KeyFileNew();
58 // g_key_file_remove_group
59 virtual void KeyFileRemoveGroup(GKeyFile *key_file,
60 const gchar *group_name,
61 GError **error);
62 // g_key_file_remove_key
63 virtual void KeyFileRemoveKey(GKeyFile *key_file,
64 const gchar *group_name,
65 const gchar *key,
66 GError **error);
67 // g_key_file_set_boolean
68 virtual void KeyFileSetBoolean(GKeyFile *key_file,
69 const gchar *group_name,
70 const gchar *key,
71 gboolean value);
72 // g_key_file_set_integer
73 virtual void KeyFileSetInteger(GKeyFile *key_file,
74 const gchar *group_name,
75 const gchar *key,
76 gint value);
77 // g_key_file_set_string
78 virtual void KeyFileSetString(GKeyFile *key_file,
79 const gchar *group_name,
80 const gchar *key,
81 const gchar *string);
82 // g_key_file_to_data
83 virtual gchar *KeyFileToData(GKeyFile *key_file,
84 gsize *length,
85 GError **error);
Darin Petkov3258a812011-06-23 11:28:45 -070086 // g_source_remove
Darin Petkov92c43902011-06-09 20:46:06 -070087 virtual gboolean SourceRemove(guint tag);
Darin Petkov3258a812011-06-23 11:28:45 -070088 // g_spawn_async
Darin Petkovf7897bc2011-06-08 17:13:36 -070089 virtual gboolean SpawnAsync(const gchar *working_directory,
90 gchar **argv,
91 gchar **envp,
92 GSpawnFlags flags,
93 GSpawnChildSetupFunc child_setup,
94 gpointer user_data,
95 GPid *child_pid,
96 GError **error);
Darin Petkov3258a812011-06-23 11:28:45 -070097 // g_spawn_close_pid
Darin Petkov92c43902011-06-09 20:46:06 -070098 virtual void SpawnClosePID(GPid pid);
Darin Petkov083047b2011-06-23 20:42:48 -070099 // g_strfreev
100 virtual void Strfreev(gchar **str_array);
Darin Petkovf7897bc2011-06-08 17:13:36 -0700101};
102
103} // namespace shill
104
105#endif // SHILL_GLIB_H_