| Cutterリファレンスマニュアル | ||||
|---|---|---|---|---|
| Top | 説明 | オブジェクト階層 | ||||
#define GCUT_EVENT_LOOP_ERROR GCutEventLoop; GCutEventLoopClass; GQuark gcut_event_loop_error_quark (void); void gcut_event_loop_run (GCutEventLoop *loop); gboolean gcut_event_loop_iterate (GCutEventLoop *loop,gboolean may_block); void gcut_event_loop_quit (GCutEventLoop *loop); guint gcut_event_loop_watch_io (GCutEventLoop *loop,GIOChannel *channel,GIOCondition condition,GIOFunc function,gpointer data); guint gcut_event_loop_watch_child (GCutEventLoop *loop,GPid pid,GChildWatchFunc function,gpointer data); guint gcut_event_loop_watch_child_full (GCutEventLoop *loop,gint priority,GPid pid,GChildWatchFunc function,gpointer data,GDestroyNotify notify); guint gcut_event_loop_add_timeout (GCutEventLoop *loop,gdouble interval_in_seconds,GSourceFunc function,gpointer data); guint gcut_event_loop_add_timeout_full (GCutEventLoop *loop,gint priority,gdouble interval_in_seconds,GSourceFunc function,gpointer data,GDestroyNotify notify); guint gcut_event_loop_add_idle (GCutEventLoop *loop,GSourceFunc function,gpointer data); guint gcut_event_loop_add_idle_full (GCutEventLoop *loop,gint priority,GSourceFunc function,gpointer data,GDestroyNotify notify); gboolean gcut_event_loop_remove (GCutEventLoop *loop,guint tag);
GCutEventLoopはイベントループをカプセル化します。イベントループはGCutProcessで使われています。GCutProcessはデフォルトではGLibのデフォルトGMainContextを使います。
ふつうはカスタムGCutEventLoopは必要ありません。必要になるのは特別な場合だけです。例えば、イベントループのバックエンドにGLibのGMainLoopではなく、libevのイベントループに使っている場合です。
GCutterはGLibのGMainContextとGMainLoop用のGCutEventLoopであるGCutGLibEventLoopを提供します。
typedef struct {
GObjectClass parent_class;
void (*run) (GCutEventLoop *loop);
gboolean (*iterate) (GCutEventLoop *loop,
gboolean may_block);
void (*quit) (GCutEventLoop *loop);
guint (*watch_io) (GCutEventLoop *loop,
GIOChannel *channel,
GIOCondition condition,
GIOFunc function,
gpointer data);
guint (*watch_child_full) (GCutEventLoop *loop,
gint priority,
GPid pid,
GChildWatchFunc function,
gpointer data,
GDestroyNotify notify);
guint (*add_timeout_full) (GCutEventLoop *loop,
gint priority,
gdouble interval_in_seconds,
GSourceFunc function,
gpointer data,
GDestroyNotify notify);
guint (*add_idle_full) (GCutEventLoop *loop,
gint priority,
GSourceFunc function,
gpointer data,
GDestroyNotify notify);
gboolean (*remove) (GCutEventLoop *loop,
guint tag);
} GCutEventLoopClass;
void gcut_event_loop_run (GCutEventLoop *loop);
gcut_event_loop_quit()が呼ばれるまでイベントループを回します。
|
GCutEventLoop。 |
1.1.6から
gboolean gcut_event_loop_iterate (GCutEventLoop *loop,gboolean may_block);
イベントループを1回だけ回します。もし、イベントがなくmay_blockがTRUEなら、イベントがくるまで待ちつづけます。may_blockがFALSEなら、イベントがくるのを待ちません。
|
GCutEventLoop。 |
|
呼び出しがブロックするかどうか。 |
戻り値 : |
イベントを処理したらTRUE。 |
1.1.6から
void gcut_event_loop_quit (GCutEventLoop *loop);
実行中のloopを止めます。
|
GCutEventLoop。 |
1.1.6から
guint gcut_event_loop_watch_io (GCutEventLoop *loop,GIOChannel *channel,GIOCondition condition,GIOFunc function,gpointer data);
channelをデフォルトの優先度でloopに追加します。channelにconditionイベントが発生したらfunctionが呼ばれます。
|
GCutEventLoop。 |
|
GIOChannel。 |
|
監視する状態。 |
|
呼び出される関数 |
|
functionに渡されるデータ |
戻り値 : |
イベントID。 |
1.1.6から
guint gcut_event_loop_watch_child (GCutEventLoop *loop,GPid pid,GChildWatchFunc function,gpointer data);
pidの子プロセスが終了した時に呼ばれるfunctionをデフォルトの優先度でloopに追加します。
|
GCutEventLoop。 |
|
監視するプロセスのID |
|
呼び出される関数 |
|
functionに渡されるデータ |
戻り値 : |
イベントID。 |
1.1.6から
guint gcut_event_loop_watch_child_full (GCutEventLoop *loop,gint priority,GPid pid,GChildWatchFunc function,gpointer data,GDestroyNotify notify);
pidの子プロセスが終了した時に呼ばれるfunctionをデフォルトの優先度でloopに追加します。
|
GCutEventLoop。 |
|
このイベントの優先度。 |
|
監視するプロセスのID |
|
呼び出される関数 |
|
functionに渡されるデータ |
|
このイベントが削除された時に呼ばれる関数またはNULL。 |
戻り値 : |
イベントID。 |
1.1.6から
guint gcut_event_loop_add_timeout (GCutEventLoop *loop,gdouble interval_in_seconds,GSourceFunc function,gpointer data);
一定間隔で呼び出されるfunctionをデフォルト優先度で追加します。
|
GCutEventLoop。 |
|
functionを呼び出す感覚。単位は秒。 |
|
呼び出される関数 |
|
functionに渡されるデータ |
戻り値 : |
イベントID。 |
1.1.6から
guint gcut_event_loop_add_timeout_full (GCutEventLoop *loop,gint priority,gdouble interval_in_seconds,GSourceFunc function,gpointer data,GDestroyNotify notify);
定期的に呼び出される関数を優先度priorityで追加します。
|
GCutEventLoop。 |
|
このイベントの優先度。 |
|
functionを呼び出す感覚。単位は秒。 |
|
呼び出される関数 |
|
functionに渡されるデータ |
|
このイベントが削除された時に呼ばれる関数またはNULL。 |
戻り値 : |
イベントID。 |
1.1.6から
guint gcut_event_loop_add_idle (GCutEventLoop *loop,GSourceFunc function,gpointer data);
デフォルト優先度より高い優先度がない場合に呼び出される関数functionを追加します。
|
GCutEventLoop。 |
|
呼び出される関数 |
|
functionに渡されるデータ |
戻り値 : |
イベントID。 |
1.1.6から
guint gcut_event_loop_add_idle_full (GCutEventLoop *loop,gint priority,GSourceFunc function,gpointer data,GDestroyNotify notify);
優先度priorityより高い優先度のイベントがない場合に呼び出される関数functionを追加します。
|
GCutEventLoop。 |
|
このイベントの優先度。 |
|
呼び出される関数 |
|
functionに渡されるデータ |
|
このイベントが削除された時に呼ばれる関数またはNULL。 |
戻り値 : |
イベントID。 |
1.1.6から
gboolean gcut_event_loop_remove (GCutEventLoop *loop,guint tag);
IDがtagのイベントを削除します。
|
GCutEventLoop。 |
|
削除するソースのID。 |
戻り値 : |
ソースが見つかって削除されたらTRUE。 |
1.1.6から