## GdaVconnectionHub GdaVconnectionHub — Virtual connection which bind together connections |

## Stability Level

Stable, unless otherwise indicated

## Synopsis

    struct              GdaVconnectionHub;
    void                (*GdaVConnectionHubFunc)            (GdaConnection *cnc,
                                                             const gchar *ns,
                                                             gpointer data);
    gboolean            gda_vconnection_hub_add             (GdaVconnectionHub *hub,
                                                             GdaConnection *cnc,
                                                             const gchar *ns,
                                                             GError **error);
    gboolean            gda_vconnection_hub_remove          (GdaVconnectionHub *hub,
                                                             GdaConnection *cnc,
                                                             GError **error);
    GdaConnection *     gda_vconnection_hub_get_connection  (GdaVconnectionHub *hub,
                                                             const gchar *ns);
    void                gda_vconnection_hub_foreach         (GdaVconnectionHub *hub,
                                                             GdaVConnectionHubFunc func,
                                                             gpointer data);

## Object Hierarchy

      GObject
       +----GdaConnection
             +----GdaVirtualConnection
                   +----GdaVconnectionDataModel
                         +----GdaVconnectionHub

## Implemented Interfaces

GdaVconnectionHub implements GdaLockable.

## Description

The GdaVconnectionHub object "binds" together the tables from other (opened) connections to make it possible to run SQL queries on data from several connections at once.

A GdaVconnectionHub connection can bind several other connections, each separated in its own namespace (which is specified when adding a connection using `gda_vconnection_hub_add()`).

For example if a connection A has two tables 'table_1' and 'table_2', then after `gda_vconnection_hub_add()` has been called with A as connection argument and with a "c1" namespace, then in the corresponding GdaVconnectionHub connection, table 'table_1' must be referred to as 'c1.table_1' and 'table_2' must be referred to as 'c1.table_2'.

## Details

### struct GdaVconnectionHub

    struct GdaVconnectionHub;

### GdaVConnectionHubFunc ()

    void                (*GdaVConnectionHubFunc)            (GdaConnection *cnc,
                                                             const gchar *ns,
                                                             gpointer data);

### gda_vconnection_hub_add ()

    gboolean            gda_vconnection_hub_add             (GdaVconnectionHub *hub,
                                                             GdaConnection *cnc,
                                                             const gchar *ns,
                                                             GError **error);

Make all the tables of `cnc` appear as tables (of the same name) in the `hub` connection. If the `ns` is not `NULL`, then within `hub`, the tables will be accessible using the '`ns`.`table_name`' notation.

Within any instance of `hub`, there can be only one added connection where `ns` is `NULL`.

`hub` : | a GdaVconnectionHub connection
`cnc` : | a GdaConnection
`ns` : | a namespace, or `NULL`. [allow-none]
`error` : | a place to store errors, or `NULL`
Returns : | TRUE if no error occurred

### gda_vconnection_hub_remove ()

    gboolean            gda_vconnection_hub_remove          (GdaVconnectionHub *hub,
                                                             GdaConnection *cnc,
                                                             GError **error);

Remove all the tables in `hub` representing `cnc`'s tables.

`hub` : | a GdaVconnectionHub connection
`cnc` : | a GdaConnection
`error` : | a place to store errors, or `NULL`
Returns : | TRUE if no error occurred

### gda_vconnection_hub_get_connection ()

    GdaConnection *     gda_vconnection_hub_get_connection  (GdaVconnectionHub *hub,
                                                             const gchar *ns);

Find the GdaConnection object in `hub` associated to the `ns` name space

`hub` : | a GdaVconnectionHub connection
`ns` : | a name space, or `NULL`. [allow-none]
Returns : | the GdaConnection, or `NULL` if no connection is associated to `ns`

### gda_vconnection_hub_foreach ()

    void                gda_vconnection_hub_foreach         (GdaVconnectionHub *hub,
                                                             GdaVConnectionHubFunc func,
                                                             gpointer data);

Call `func` for each GdaConnection represented in `hub`.

`hub` : | a GdaVconnectionHub connection
`func` : | a GdaVconnectionDataModelFunc function pointer
`data` : | data to pass to `func` calls