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

## Stability Level

Stable, unless otherwise indicated

## Functions

void | (*GdaVConnectionHubFunc) ()
gboolean | gda_vconnection_hub_add ()
gboolean | gda_vconnection_hub_remove ()
GdaConnection * | gda_vconnection_hub_get_connection ()
void | gda_vconnection_hub_foreach ()

## Types and Values

| GdaVconnectionHub

## 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'.

## Functions

### 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`.

#### Parameters

hub | a GdaVconnectionHub connection |
cnc | a GdaConnection |
ns | a namespace, or `NULL` |
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.

#### Parameters

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

#### Parameters

hub | a GdaVconnectionHub connection |
ns | a name space, or `NULL`. | [nullable]

#### 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` .

#### Parameters

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

## Types and Values

### GdaVconnectionHub

    typedef struct _GdaVconnectionHub GdaVconnectionHub;