X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gio%2Fgnetworkmonitor.c;h=79c7bd94f50bb06104224a3b8cb8830e44b6cb49;hb=627b49b39039d43a784fa9890f473d1ca8d52417;hp=33e97042af16a37005d657b44f969e5bc4d2268b;hpb=fe5ba0f291c11a22fbfe812d1c8315837fa14177;p=platform%2Fupstream%2Fglib.git
diff --git a/gio/gnetworkmonitor.c b/gio/gnetworkmonitor.c
index 33e9704..79c7bd9 100644
--- a/gio/gnetworkmonitor.c
+++ b/gio/gnetworkmonitor.c
@@ -13,9 +13,7 @@
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General
- * Public License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place, Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Public License along with this library; if not, see .
*/
#include "config.h"
@@ -28,13 +26,17 @@
#include "ginitable.h"
#include "gioenumtypes.h"
#include "giomodule-priv.h"
-#include "gsimpleasyncresult.h"
+#include "gtask.h"
/**
* SECTION:gnetworkmonitor
* @title: GNetworkMonitor
* @short_description: Network status monitor
* @include: gio/gio.h
+ *
+ * #GNetworkMonitor provides an easy-to-use cross-platform API
+ * for monitoring network connectivity. On Linux, the implementation
+ * is based on the kernel's netlink interface.
*/
/**
@@ -47,7 +49,7 @@
*/
G_DEFINE_INTERFACE_WITH_CODE (GNetworkMonitor, g_network_monitor, G_TYPE_OBJECT,
- g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_INITABLE);)
+ g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_INITABLE);)
enum {
@@ -70,8 +72,8 @@ GNetworkMonitor *
g_network_monitor_get_default (void)
{
return _g_io_module_get_default (G_NETWORK_MONITOR_EXTENSION_POINT_NAME,
- "GIO_USE_NETWORK_MONITOR",
- NULL);
+ "GIO_USE_NETWORK_MONITOR",
+ NULL);
}
/**
@@ -83,7 +85,7 @@ g_network_monitor_get_default (void)
* IPv6. It does not necessarily imply that the public Internet is
* reachable. See #GNetworkMonitor:network-available for more details.
*
- * Return value: whether the network is available
+ * Returns: whether the network is available
*
* Since: 2.32
*/
@@ -100,7 +102,7 @@ g_network_monitor_get_network_available (GNetworkMonitor *monitor)
* g_network_monitor_can_reach:
* @monitor: a #GNetworkMonitor
* @connectable: a #GSocketConnectable
- * @cancellable: a #GCancellable, or %NULL
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
* @error: return location for a #GError, or %NULL
*
* Attempts to determine whether or not the host pointed to by
@@ -121,15 +123,15 @@ g_network_monitor_get_network_available (GNetworkMonitor *monitor)
* trying to do multicast DNS on the local network), so if you do not
* want to block, you should use g_network_monitor_can_reach_async().
*
- * Return value: %TRUE if @connectable is reachable, %FALSE if not.
+ * Returns: %TRUE if @connectable is reachable, %FALSE if not.
*
* Since: 2.32
*/
gboolean
g_network_monitor_can_reach (GNetworkMonitor *monitor,
- GSocketConnectable *connectable,
- GCancellable *cancellable,
- GError **error)
+ GSocketConnectable *connectable,
+ GCancellable *cancellable,
+ GError **error)
{
GNetworkMonitorInterface *iface;
@@ -139,31 +141,47 @@ g_network_monitor_can_reach (GNetworkMonitor *monitor,
static void
g_network_monitor_real_can_reach_async (GNetworkMonitor *monitor,
- GSocketConnectable *connectable,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data)
+ GSocketConnectable *connectable,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
- GSimpleAsyncResult *simple;
+ GTask *task;
GError *error = NULL;
- simple = g_simple_async_result_new (G_OBJECT (monitor),
- callback, user_data,
- g_network_monitor_real_can_reach_async);
+ task = g_task_new (monitor, cancellable, callback, user_data);
if (g_network_monitor_can_reach (monitor, connectable, cancellable, &error))
- g_simple_async_result_set_op_res_gboolean (simple, TRUE);
+ g_task_return_boolean (task, TRUE);
else
- g_simple_async_result_take_error (simple, error);
- g_simple_async_result_complete_in_idle (simple);
- g_object_unref (simple);
+ g_task_return_error (task, error);
+ g_object_unref (task);
}
+/**
+ * g_network_monitor_can_reach_async:
+ * @monitor: a #GNetworkMonitor
+ * @connectable: a #GSocketConnectable
+ * @cancellable: (allow-none): a #GCancellable, or %NULL
+ * @callback: (scope async): a #GAsyncReadyCallback to call when the
+ * request is satisfied
+ * @user_data: (closure): the data to pass to callback function
+ *
+ * Asynchronously attempts to determine whether or not the host
+ * pointed to by @connectable can be reached, without actually
+ * trying to connect to it.
+ *
+ * For more details, see g_network_monitor_can_reach().
+ *
+ * When the operation is finished, @callback will be called.
+ * You can then call g_network_monitor_can_reach_finish()
+ * to get the result of the operation.
+ */
void
g_network_monitor_can_reach_async (GNetworkMonitor *monitor,
- GSocketConnectable *connectable,
- GCancellable *cancellable,
- GAsyncReadyCallback callback,
- gpointer user_data)
+ GSocketConnectable *connectable,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
{
GNetworkMonitorInterface *iface;
@@ -173,24 +191,29 @@ g_network_monitor_can_reach_async (GNetworkMonitor *monitor,
static gboolean
g_network_monitor_real_can_reach_finish (GNetworkMonitor *monitor,
- GAsyncResult *result,
- GError **error)
+ GAsyncResult *result,
+ GError **error)
{
- GSimpleAsyncResult *simple;
+ g_return_val_if_fail (g_task_is_valid (result, monitor), FALSE);
- g_return_val_if_fail (g_simple_async_result_is_valid (result, G_OBJECT (monitor), g_network_monitor_real_can_reach_async), FALSE);
-
- simple = G_SIMPLE_ASYNC_RESULT (result);
- if (g_simple_async_result_propagate_error (simple, error))
- return FALSE;
- else
- return g_simple_async_result_get_op_res_gboolean (simple);
+ return g_task_propagate_boolean (G_TASK (result), error);
}
+/**
+ * g_network_monitor_can_reach_finish:
+ * @monitor: a #GNetworkMonitor
+ * @result: a #GAsyncResult
+ * @error: return location for errors, or %NULL
+ *
+ * Finishes an async network connectivity test.
+ * See g_network_monitor_can_reach_async().
+ *
+ * Returns: %TRUE if network is reachable, %FALSE if not.
+ */
gboolean
g_network_monitor_can_reach_finish (GNetworkMonitor *monitor,
- GAsyncResult *result,
- GError **error)
+ GAsyncResult *result,
+ GError **error)
{
GNetworkMonitorInterface *iface;
@@ -219,13 +242,13 @@ g_network_monitor_default_init (GNetworkMonitorInterface *iface)
*/
signals[NETWORK_CHANGED] =
g_signal_new (I_("network-changed"),
- G_TYPE_NETWORK_MONITOR,
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (GNetworkMonitorInterface, network_changed),
- NULL, NULL,
- g_cclosure_marshal_VOID__BOOLEAN,
- G_TYPE_NONE, 1,
- G_TYPE_BOOLEAN);
+ G_TYPE_NETWORK_MONITOR,
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GNetworkMonitorInterface, network_changed),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__BOOLEAN,
+ G_TYPE_NONE, 1,
+ G_TYPE_BOOLEAN);
/**
* GNetworkMonitor:network-available:
@@ -239,10 +262,9 @@ g_network_monitor_default_init (GNetworkMonitorInterface *iface)
* connected to a functioning router that has lost its own upstream
* connectivity. Some hosts might only be accessible when a VPN is
* active. Other hosts might only be accessible when the VPN is
- * not active. Thus, it is best to use
- * g_network_monitor_can_reach() or
- * g_network_monitor_can_reach_async() to test for reachability on a
- * host-by-host basis. (On the other hand, when the property is
+ * not active. Thus, it is best to use g_network_monitor_can_reach()
+ * or g_network_monitor_can_reach_async() to test for reachability
+ * on a host-by-host basis. (On the other hand, when the property is
* %FALSE, the application can reasonably expect that no remote
* hosts at all are reachable, and should indicate this to the user
* in its UI.)
@@ -252,10 +274,10 @@ g_network_monitor_default_init (GNetworkMonitorInterface *iface)
* Since: 2.32
*/
g_object_interface_install_property (iface,
- g_param_spec_boolean ("network-available",
- P_("Network available"),
- P_("Whether the network is available"),
- FALSE,
- G_PARAM_READABLE |
- G_PARAM_STATIC_STRINGS));
+ g_param_spec_boolean ("network-available",
+ P_("Network available"),
+ P_("Whether the network is available"),
+ FALSE,
+ G_PARAM_READABLE |
+ G_PARAM_STATIC_STRINGS));
}