## TpExportableChannel TpExportableChannel — interface representing channels with several standard properties |

## Synopsis

    #include <telepathy-glib/exportable-channel.h>

    void                (*TpExportableChannelFunc)          (TpExportableChannel *channel,
                                                             gpointer user_data);
                        TpExportableChannel;
    struct              TpExportableChannelIface;

## Object Hierarchy

      GInterface
       +----TpExportableChannel

## Prerequisites

TpExportableChannel requires TpSvcChannel.

## Known Implementations

TpExportableChannel is implemented by TpBaseCallChannel, TpBaseChannel, TpBaseMediaCallChannel and TpBasePasswordChannel.

## Properties

      "channel-destroyed"        gboolean              : Read
      "channel-properties"       GHashTable_gchararray+GValue_*  : Read
      "object-path"              gchar*                : Read / Write / Construct Only

## Description

This interface defines a set of channel properties on top of those of TpChannelIface. It's mainly used by TpChannelManager to represent the returned and managed channel objects.

## Details

### TpExportableChannelFunc ()

    void                (*TpExportableChannelFunc)          (TpExportableChannel *channel,
                                                             gpointer user_data);

A callback for functions which act on exportable channels.

`channel` : | An object implementing the exportable channel interface
`user_data` : | Arbitrary user-supplied data

### TpExportableChannel

    typedef struct _TpExportableChannel TpExportableChannel;

Opaque typedef representing a channel with several standard properties.

### struct TpExportableChannelIface

    struct TpExportableChannelIface {
        GTypeInterface parent;
    };

The interface for TpExportableChannel objects.

GTypeInterface `parent`; | The parent interface

## Property Details

### The `"channel-destroyed"` property

      "channel-destroyed"        gboolean              : Read

If true, the closed signal on the Channel interface indicates that the channel can go away.

If false, the closed signal indicates to the channel manager that the channel should appear to go away and be re-created, by emitting Closed followed by NewChannel. (This is to support the "respawning" of Text channels which are closed with unacknowledged messages.)

Default value: FALSE

### The `"channel-properties"` property

      "channel-properties"       GHashTable_gchararray+GValue_*  : Read

The D-Bus properties to be announced in the NewChannels signal and in the Channels property, as a map from interface.name.propertyname to GValue.

A channel's immutable properties are constant for its lifetime on the bus, so this property should only change when the closed signal is emitted (so that respawned channels can reappear on the bus with different properties). All of the D-Bus properties mentioned here should be exposed through the D-Bus properties interface; additional (possibly mutable) properties not included here may also be exposed via the D-Bus properties interface.

If the channel implementation uses TpDBusPropertiesMixin, this property can implemented using `tp_dbus_properties_mixin_make_properties_hash()` as follows:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    case PROP_CHANNEL_PROPERTIES:
      g_value_take_boxed (value,
        tp_dbus_properties_mixin_make_properties_hash (object,
            // The spec says these properties MUST be included:
            TP_IFACE_CHANNEL, "TargetHandle",
            TP_IFACE_CHANNEL, "TargetHandleType",
            TP_IFACE_CHANNEL, "ChannelType",
            TP_IFACE_CHANNEL, "TargetID",
            TP_IFACE_CHANNEL, "Requested",
            // These aren't mandatory as of spec 0.17.17
            // (but they should be):
            TP_IFACE_CHANNEL, "InitiatorHandle",
            TP_IFACE_CHANNEL, "InitiatorID",
            TP_IFACE_CHANNEL, "Interfaces",
            // Perhaps your channel has some other immutable properties:
            TP_IFACE_CHANNEL_INTERFACE_MESSAGES, "SupportedContentTypes",
            // etc.
            NULL));
      break;

### The `"object-path"` property

      "object-path"              gchar*                : Read / Write / Construct Only

The D-Bus object path used for this object on the bus. Read-only except during construction.

Default value: NULL

## See Also

TpChannelIface, TpChannelManager, TpSvcChannel