## InfLocalPublisher

InfLocalPublisher — Publish services on the local network

## Functions

InfLocalPublisherItem * | inf_local_publisher_publish ()
void | inf_local_publisher_unpublish ()

## Types and Values

| InfLocalPublisher
struct | InfLocalPublisherInterface
| InfLocalPublisherItem

## Object Hierarchy

        GInterface
        ╰── InfLocalPublisher

## Prerequisites

InfLocalPublisher requires GObject.

## Known Implementations

InfLocalPublisher is implemented by InfDiscoveryAvahi.

## Includes

    #include <libinfinity/common/inf-local-publisher.h>

## Description

InfLocalPublisher provides a common interface to publish services on the local network.

## Functions

### inf_local_publisher_publish ()

    InfLocalPublisherItem *
    inf_local_publisher_publish (InfLocalPublisher *publisher,
                                 const gchar *type,
                                 const gchar *name,
                                 guint port);

Publishes a service through `publisher` so that it can be discovered with an appropriate InfDiscovery.

#### Parameters

publisher | A InfLocalPublisher. |
type | The service type to publish, such as _http._tcp. |
name | The name of the service. |
port | The port the service is listening on. |

#### Returns

A InfLocalPublisherItem that can be used to unpublish the service again.

[transfer none]

### inf_local_publisher_unpublish ()

    void
    inf_local_publisher_unpublish (InfLocalPublisher *publisher,
                                   InfLocalPublisherItem *item);

Unpublishes `item` so that it can no longer be found in the network.

#### Parameters

publisher | A InfLocalPublisher. |
item | A published item obtained from `inf_local_publisher_publish()`. |

## Types and Values

### InfLocalPublisher

    typedef struct _InfLocalPublisher InfLocalPublisher;

InfLocalPublisher is an opaque data type. You should only access it via the public API functions.

### struct InfLocalPublisherInterface

    struct InfLocalPublisherInterface {
      InfLocalPublisherItem* (*publish)(InfLocalPublisher* publisher,
                                        const gchar* type,
                                        const gchar* name,
                                        guint port);

      void (*unpublish)(InfLocalPublisher* publisher,
                        InfLocalPublisherItem* item);
    };

Virtual functions for InfLocalPublisher.

#### Members

`publish` () | Virtual function to announce a service of the given type with the given name on the given port. The returned InfLocalPublisherItem is valid as long as the service is published and the InfLocalPublisher is alive. It can be used to unpublish the service again using the `unpublish` function. |
`unpublish` () | Virtual function to unpublish a previously published service. |

### InfLocalPublisherItem

    typedef struct _InfLocalPublisherItem InfLocalPublisherItem;

InfLocalPublisherItem is an opaque data type. You should only access it via the public API functions.

## See Also

InfDiscoveryAvahi