## DeeServer DeeServer — Creates a server object you can connect to. |

## Synopsis

    #include <dee.h>

                        DeeServer;
                        DeeServerClass;
    gchar *             dee_server_bus_address_for_name     (const gchar *name,
                                                             gboolean include_username);
    const gchar *       dee_server_get_client_address       (DeeServer *server);
    DeeServer *         dee_server_new                      (const gchar *swarm_name);
    DeeServer *         dee_server_new_for_address          (const gchar *swarm_name,
                                                             const gchar *bus_address);

## Object Hierarchy

      GObject
       +----DeePeer
             +----DeeServer

## Properties

      "bus-address"              gchar*                : Read / Write / Construct Only
      "same-user-only"           gboolean              : Read / Write / Construct Only

## Description

DeeServer allows you to create private connections (connections which are not routed via dbus-daemon). Note that, unlike DeePeer, DeeServer will always be swarm leader, and clients connected to it cannot overtake swarm leadership once the server connection is closed.

## Details

### DeeServer

    typedef struct _DeeServer DeeServer;

### DeeServerClass

    typedef struct {
    } DeeServerClass;

### dee_server_bus_address_for_name ()

    gchar *             dee_server_bus_address_for_name     (const gchar *name,
                                                             gboolean include_username);

Helper method which creates bus address string for the given name, which should have the same format as a DBus unique name.

`name` : | A name to create bus address for.
`include_username` : | Include current user name as part of the bus address.
Returns : | Newly allocated string with bus address. Use `g_free()` to free. [transfer full]

### dee_server_get_client_address ()

    const gchar *       dee_server_get_client_address       (DeeServer *server);

Gets a D-Bus address string that can be used by clients to connect to server.

`server` : | A DeeServer.
Returns : | A D-Bus address string. Do not free.

### dee_server_new ()

    DeeServer *         dee_server_new                      (const gchar *swarm_name);

Creates a new instance of DeeServer and tries to bind to "bus-address". The "swarm-leader" property will be set when the binding succeeds.

### Note

Note that this function will automatically determine the value of "bus-address" property and will generally cause your application to use new socket for every DeeServer with different swarm name. See `dee_server_new_for_address()` if you'd like to share one connection between multiple DeeServer instances.

`swarm_name` : | Name of swarm to join.
Returns : | A newly constructed DeeServer. [transfer full]

### dee_server_new_for_address ()

    DeeServer *         dee_server_new_for_address          (const gchar *swarm_name,
                                                             const gchar *bus_address);

Creates a new instance of DeeServer and tries to bind to `bus_address`. The "swarm-leader" property will be set when the binding succeeds.

If there is already a DeeServer instance bound to `bus_address`, the connection will be shared with the newly constructed instance.

### Note

This function is primarily meant for sharing of one connection (socket) between multiple DeeServers, so that you can create DeeServer instances with varying swarm names, but the same bus address, which will cause them to share the connection (the sharing is possible only within the same process though).

`swarm_name` : | Name of swarm to join.
`bus_address` : | D-Bus address to use for the connection.
Returns : | A newly constructed DeeServer. [transfer full]

## Property Details

### The `"bus-address"` property

      "bus-address"              gchar*                : Read / Write / Construct Only

Bus address to use for the connection.

Default value: NULL

### The `"same-user-only"` property

      "same-user-only"           gboolean              : Read / Write / Construct Only

Accept connections from current user only.

Default value: TRUE