# linc

## Name

linc -- the main setup and loop methods

## Synopsis

    extern      GMainLoop *linc_loop;
    void        linc_set_threaded               (gboolean threaded);
    void        linc_init                       (gboolean init_threads);
    LincWatch*  linc_io_add_watch               (GIOChannel *channel,
                                                 GIOCondition condition,
                                                 GIOFunc func,
                                                 gpointer user_data);
    void        linc_io_remove_watch            (LincWatch *watch);
    void        linc_main_iteration             (gboolean block_for_reply);
    gboolean    linc_main_pending               (void);
    void        linc_main_loop_run              (void);

## Description

## Details

### linc_loop

    extern GMainLoop *linc_loop;

### linc_set_threaded ()

    void        linc_set_threaded               (gboolean threaded);

This routine turns threading on or off for the whole ORB, it should be called (TRUE) if threading is desired before any of the ORB initialization occurs.

`threaded` : | whether to do locking

### linc_init ()

    void        linc_init                       (gboolean init_threads);

Initialize linc.

`init_threads` : | if we want threading enabled.

### linc_io_add_watch ()

    LincWatch*  linc_io_add_watch               (GIOChannel *channel,
                                                 GIOCondition condition,
                                                 GIOFunc func,
                                                 gpointer user_data);

This routine creates a watch on an IO channel that operates both in the standard glib mainloop, but also in the 'linc' mainloop so we can iterate that without causing re-enterancy.

This method is deprecated.

`channel` : | the GIOChannel to watch
`condition` : | the condition mask to watch for
`func` : | the function to invoke when a condition is met
`user_data` : | a user data closure
Returns : | a pointer identifying the watch.

### linc_io_remove_watch ()

    void        linc_io_remove_watch            (LincWatch *watch);

This removes a watch by it's handle in `w`

`watch` : | the handle of a watch on a GIOChannel

### linc_main_iteration ()

    void        linc_main_iteration             (gboolean block_for_reply);

This routine iterates the linc mainloop, which has only the linc sources registered against it.

`block_for_reply` : | whether we should wait for a reply

### linc_main_pending ()

    gboolean    linc_main_pending               (void);

determines if the linc mainloop has any pending work to process.

Returns : | TRUE if the linc mainloop has any pending work to process.

### linc_main_loop_run ()

    void        linc_main_loop_run              (void);

Runs the linc mainloop; blocking until the loop is exited.