EpcServiceType: Easy Publish and Consume Reference Manual

## EpcServiceType EpcServiceType — service type details |

## Stability Level

Unstable, unless otherwise indicated

## Functions

const gchar * | epc_service_type_get_base ()
EpcProtocol | epc_service_type_get_protocol ()
gchar ** | epc_service_type_list_supported ()
gchar * | epc_service_type_new ()

## Types and Values

#define | EPC_SERVICE_TYPE_HTTP
#define | EPC_SERVICE_TYPE_HTTPS

## Includes

    #include <libepc/service-type.h>

## Description

DNS-SD uses well-known services types to discover service providers. The following macros describe the service types uses by this library.

Example 9. Find an Easy-Publish server

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    dialog = aui_service_dialog_new ("Choose an Easy Publish Server", NULL,
                                     GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                                     GTK_STOCK_CONNECT, GTK_RESPONSE_ACCEPT,
                                     NULL);
    aui_service_dialog_set_browse_service_types (AUI_SERVICE_DIALOG (dialog),
                                                 EPC_SERVICE_TYPE_HTTPS,
                                                 EPC_SERVICE_TYPE_HTTP,
                                                 NULL);

    if (GTK_RESPONSE_ACCEPT == gtk_dialog_run (GTK_DIALOG (dialog)))
      {
        const gint port = aui_service_dialog_get_port (AUI_SERVICE_DIALOG (dialog));
        const gchar *host = aui_service_dialog_get_host_name (AUI_SERVICE_DIALOG (dialog));
        const gchar *type = aui_service_dialog_get_service_type (AUI_SERVICE_DIALOG (dialog));
        EpcProtocol protocol = epc_service_type_get_protocol (type);
        ...
      }

## Functions

### epc_service_type_get_base ()

    const gchar *
    epc_service_type_get_base (const gchar *type);

Extracts the base service-type of a DNS-SD service-type.

DNS-SD service types may contain a sub service type, for instance the service-type "_anon._sub._ftp._tcp" contains the base-type "_ftp._tcp" and the sub-type "_anon". This function extracts extracts the base-type. The service type is returned unmodifed if it doesn't contain a sub-type.

#### Parameters

type | a DNS-SD service-type |

#### Returns

The base-service-type.

### epc_service_type_get_protocol ()

    EpcProtocol
    epc_service_type_get_protocol (const gchar *service_type);

Queries the EpcProtocol associated with a DNS-SD service type. See EPC_SERVICE_TYPE_HTTP, EPC_SERVICE_TYPE_HTTPS.

#### Parameters

service_type | a DNS-SD service type |

#### Returns

Returns the EpcProtocol associated with `service_type` , or EPC_PROTOCOL_UNKNOWN for unrecognized or unsupported service types.

### epc_service_type_list_supported ()

    gchar **
    epc_service_type_list_supported (const gchar *application);

Lists all service types supported by the library. When `application` is `NULL` just the generic types, otherwise the service-subtypes for that application are returned. The returned list is terminated by `NULL` and must be released by the caller with `g_strfreev()`.

See also: `epc_service_type_new()`.

#### Parameters

application | an application name, or `NULL` |

#### Returns

The `NULL` terminated list of all supported service types.

### epc_service_type_new ()

    gchar *
    epc_service_type_new (EpcProtocol protocol,
                          const gchar *application);

Builds the DNS-SD service type for the given transport `protocol` and application. When `application` is `NULL`, the application name is retrieved by calling `g_get_prgname()`. `NULL` is returned in that case if `g_get_prgname()` returns `NULL`.

The string returned should be released when no longer needed.

#### Parameters

protocol | a EpcProtocol |
application | the application name, or `NULL` |

#### Returns

A newly allocated string holding the requested service-type, or `NULL` when `application` is `NULL` and `g_get_prgname()` fails.

## Types and Values

### EPC_SERVICE_TYPE_HTTP

    #define EPC_SERVICE_TYPE_HTTP   "_easy-publish-http._tcp"

The well-known DNS-SD service type for EpcPublisher servers providing unencrypted HTTP access.

### EPC_SERVICE_TYPE_HTTPS

    #define EPC_SERVICE_TYPE_HTTPS  "_easy-publish-https._tcp"

The well-known DNS-SD service type for EpcPublisher servers providing encrypted HTTPS access.

## See Also

EpcConsumer, EpcPublisher