## TpStreamTubeChannel TpStreamTubeChannel — proxy object for a stream tube channel |

## Synopsis

    #include <telepathy-glib/stream-tube-channel.h>

    struct              TpStreamTubeChannel;
    struct              TpStreamTubeChannelClass;
    void                tp_stream_tube_channel_accept_async (TpStreamTubeChannel *self,
                                                             GAsyncReadyCallback callback,
                                                             gpointer user_data);
    TpStreamTubeConnection * tp_stream_tube_channel_accept_finish
                                                            (TpStreamTubeChannel *self,
                                                             GAsyncResult *result,
                                                             GError **error);
    GHashTable *        tp_stream_tube_channel_get_parameters
                                                            (TpStreamTubeChannel *self);
    const gchar *       tp_stream_tube_channel_get_service  (TpStreamTubeChannel *self);
    TpStreamTubeChannel * tp_stream_tube_channel_new        (TpConnection *conn,
                                                             const gchar *object_path,
                                                             const GHashTable *immutable_properties,
                                                             GError **error);
    void                tp_stream_tube_channel_offer_async  (TpStreamTubeChannel *self,
                                                             GHashTable *params,
                                                             GAsyncReadyCallback callback,
                                                             gpointer user_data);
    gboolean            tp_stream_tube_channel_offer_finish (TpStreamTubeChannel *self,
                                                             GAsyncResult *result,
                                                             GError **error);

## Object Hierarchy

      GObject
       +----TpProxy
             +----TpChannel
                   +----TpStreamTubeChannel

## Implemented Interfaces

TpStreamTubeChannel implements TpChannelIface.

## Properties

      "parameters"               GHashTable_gchararray+GValue_*  : Read
      "service"                  gchar*                : Read

## Signals

      "incoming"                                       : Run Last

## Description

TpStreamTubeChannel is a sub-class of TpChannel providing convenient API to offer and accept a stream tube.

## Details

### struct TpStreamTubeChannel

    struct TpStreamTubeChannel;

Data structure representing a TpStreamTubeChannel.

Since 0.13.2

### struct TpStreamTubeChannelClass

    struct TpStreamTubeChannelClass {
    };

The class of a TpStreamTubeChannel.

Since 0.13.2

### tp_stream_tube_channel_accept_async ()

    void                tp_stream_tube_channel_accept_async (TpStreamTubeChannel *self,
                                                             GAsyncReadyCallback callback,
                                                             gpointer user_data);

Accept an incoming stream tube. When the tube has been accepted, `callback` will be called. You can then call `tp_stream_tube_channel_accept_finish()` to get a TpStreamTubeConnection connected to the tube.

`self` : | an incoming TpStreamTubeChannel
`callback` : | a callback to call when the tube has been accepted
`user_data` : | data to pass to `callback`

Since 0.13.2

### tp_stream_tube_channel_accept_finish ()

    TpStreamTubeConnection * tp_stream_tube_channel_accept_finish
                                                            (TpStreamTubeChannel *self,
                                                             GAsyncResult *result,
                                                             GError **error);

Finishes accepting an incoming stream tube. The returned TpStreamTubeConnection can then be used to exchange data through the tube.

`self` : | a TpStreamTubeChannel
`result` : | a GAsyncResult
`error` : | a GError to fill
Returns : | a newly created TpStreamTubeConnection. [transfer full]

Since 0.13.2

### tp_stream_tube_channel_get_parameters ()

    GHashTable *        tp_stream_tube_channel_get_parameters
                                                            (TpStreamTubeChannel *self);

Return the "parameters" property

`self` : | a TpStreamTubeChannel
Returns : | the value of "parameters". [transfer none][element-type utf8 GObject.Value]

Since 0.13.2

### tp_stream_tube_channel_get_service ()

    const gchar *       tp_stream_tube_channel_get_service  (TpStreamTubeChannel *self);

Return the "service" property

`self` : | a TpStreamTubeChannel
Returns : | the value of "service". [transfer none]

Since 0.13.2

### tp_stream_tube_channel_new ()

    TpStreamTubeChannel * tp_stream_tube_channel_new        (TpConnection *conn,
                                                             const gchar *object_path,
                                                             const GHashTable *immutable_properties,
                                                             GError **error);

Creates a new TpStreamTubeChannel proxy object from the provided path and properties. Most developers will not need to use this function; use TpAutomaticProxyFactory to automatically create TpStreamTubeChannel proxy objects.

`conn` : | a TpConnection; may not be `NULL`
`object_path` : | the object path of the channel; may not be `NULL`
`immutable_properties` : | the immutable properties of the channel, as signalled by the NewChannel D-Bus signal or returned by the CreateChannel and EnsureChannel D-Bus methods: a mapping from strings (D-Bus interface name + "." + property name) to GValue instances. [transfer none][element-type utf8 GObject.Value]
`error` : | used to indicate the error if `NULL` is returned
Returns : | a newly-created TpStreamTubeChannel proxy. [transfer full]

Since 0.13.2

### tp_stream_tube_channel_offer_async ()

    void                tp_stream_tube_channel_offer_async  (TpStreamTubeChannel *self,
                                                             GHashTable *params,
                                                             GAsyncReadyCallback callback,
                                                             gpointer user_data);

Offer an outgoing stream tube. When the tube has been offered, `callback` will be called. You can then call `tp_stream_tube_channel_offer_finish()` to get the result of the operation.

You have to connect to the "incoming" signal to get a TpStreamTubeConnection each time a contact establishes a connection to the tube.

`self` : | an outgoing TpStreamTubeChannel
`params` : | parameters of the tube, or `NULL`. [allow-none][transfer none]
`callback` : | a callback to call when the tube has been offered
`user_data` : | data to pass to `callback`

Since 0.13.2

### tp_stream_tube_channel_offer_finish ()

    gboolean            tp_stream_tube_channel_offer_finish (TpStreamTubeChannel *self,
                                                             GAsyncResult *result,
                                                             GError **error);

Finishes offering an outgoing stream tube.

`self` : | a TpStreamTubeChannel
`result` : | a GAsyncResult
`error` : | a GError to fill
Returns : | `TRUE` when a Tube has been successfully offered; `FALSE` otherwise

Since 0.13.2

## Property Details

### The `"parameters"` property

      "parameters"               GHashTable_gchararray+GValue_*  : Read

A string to GValue GHashTable representing the parameters of the tube.

Will be `NULL` for outgoing tubes until the tube has been offered.

Since 0.13.2

### The `"service"` property

      "service"                  gchar*                : Read

A string representing the service name that will be used over the tube.

Default value: NULL

Since 0.13.2

## Signal Details

### The `"incoming"` signal

    void                user_function                      (TpStreamTubeChannel    *self,
                                                            TpStreamTubeConnection *tube_connection,
                                                            gpointer                user_data)            : Run Last

The ::incoming signal is emitted on offered Tubes when a new incoming connection is made from a remote user (one accepting the Tube).

Consumers of this signal must take their own references to `tube_connection`

`self` : | the TpStreamTubeChannel
`tube_connection` : | the TpStreamTubeConnection for the connection
`user_data` : | user data set when the signal handler was connected.