## CamelNetworkService CamelNetworkService |

## Synopsis

                        CamelNetworkService;
    const gchar *       camel_network_service_get_service_name
                                                            (CamelNetworkService *service,
                                                             CamelNetworkSecurityMethod method);
    guint16             camel_network_service_get_default_port
                                                            (CamelNetworkService *service,
                                                             CamelNetworkSecurityMethod method);
    GSocketConnectable * camel_network_service_ref_connectable
                                                            (CamelNetworkService *service);
    void                camel_network_service_set_connectable
                                                            (CamelNetworkService *service,
                                                             GSocketConnectable *connectable);
    gboolean            camel_network_service_get_host_reachable
                                                            (CamelNetworkService *service);
    CamelStream *       camel_network_service_connect_sync  (CamelNetworkService *service,
                                                             GCancellable *cancellable,
                                                             GError **error);

## Object Hierarchy

      GInterface
       +----CamelNetworkService

## Prerequisites

CamelNetworkService requires CamelService.

## Known Implementations

CamelNetworkService is implemented by CamelIMAPXStore.

## Properties

      "connectable"              GSocketConnectable*   : Read / Write
      "host-reachable"           gboolean              : Read

## Description

## Details

### CamelNetworkService

    typedef struct _CamelNetworkService CamelNetworkService;

Since 3.2

### camel_network_service_get_service_name ()

    const gchar *       camel_network_service_get_service_name
                                                            (CamelNetworkService *service,
                                                             CamelNetworkSecurityMethod method);

Returns the standard network service name for `service` and the security method `method`, as defined in /etc/services. For example, the service name for unencrypted IMAP or encrypted IMAP using STARTTLS is "imap", but the service name for IMAP over SSL is "imaps".

`service` : | a CamelNetworkService
`method` : | a CamelNetworkSecurityMethod
Returns : | the network service name for `service` and `method`, or `NULL`

Since 3.2

### camel_network_service_get_default_port ()

    guint16             camel_network_service_get_default_port
                                                            (CamelNetworkService *service,
                                                             CamelNetworkSecurityMethod method);

Returns the default network port number for `service` and the security method `method`, as defined in /etc/services. For example, the default port for unencrypted IMAP or encrypted IMAP using STARTTLS is 143, but the default port for IMAP over SSL is 993.

`service` : | a CamelNetworkService
`method` : | a CamelNetworkSecurityMethod
Returns : | the default port number for `service` and `method`

Since 3.2

### camel_network_service_ref_connectable ()

    GSocketConnectable * camel_network_service_ref_connectable
                                                            (CamelNetworkService *service);

Returns the socket endpoint for the network service to which `service` is a client.

The returned GSocketConnectable is referenced for thread-safety and must be unreferenced with `g_object_unref()` when finished with it.

`service` : | a CamelNetworkService
Returns : | a GSocketConnectable

Since 3.8

### camel_network_service_set_connectable ()

    void                camel_network_service_set_connectable
                                                            (CamelNetworkService *service,
                                                             GSocketConnectable *connectable);

Sets the socket endpoint for the network service to which `service` is a client. If `connectable` is `NULL`, a GSocketConnectable is derived from the `service`'s CamelNetworkSettings.

`service` : | a CamelNetworkService
`connectable` : | a GSocketConnectable, or `NULL`

Since 3.8

### camel_network_service_get_host_reachable ()

    gboolean            camel_network_service_get_host_reachable
                                                            (CamelNetworkService *service);

Returns `TRUE` if `service` believes that the host pointed to by "connectable" can be reached. This property is updated automatically as network conditions change.

`service` : | a CamelNetworkService
Returns : | whether the host is reachable

Since 3.8

### camel_network_service_connect_sync ()

    CamelStream *       camel_network_service_connect_sync  (CamelNetworkService *service,
                                                             GCancellable *cancellable,
                                                             GError **error);

Attempts to establish a network connection to the server described by `service`, using the preferred "security-method" to secure the connection. If a connection cannot be established, or the connection attempt is cancelled, the function sets `error` and returns `NULL`.

`service` : | a CamelNetworkService
`cancellable` : | optional GCancellable object, or `NULL`
`error` : | return location for a GError, or `NULL`
Returns : | a CamelStream, or `NULL`

Since 3.2

## Property Details

### The `"connectable"` property

      "connectable"              GSocketConnectable*   : Read / Write

Socket endpoint of a network service.

### The `"host-reachable"` property

      "host-reachable"           gboolean              : Read

Whether the host is reachable.

Default value: FALSE