next_event, next_event_nb

Gamma: Version 4.0
Prev |  | Next

# `next_event`, `next_event_nb`

`next_event`, `next_event_nb` -- wait for an event and call the event handling function.

## Syntax

    next_event ()
    next_event_nb ()

## Arguments

`none`

## Returns

The result of executing the next event. If no event was processed, `next_event_nb` will return undefined, and `next_event` will not return.

## Description

`next_event` blocks, waiting for an event from: a window system (where applicable), another task (an interprocess communication message), a timer, or a signal. An event handling function is automatically called if one has been defined for the event. The result of `next_event` is the result returned from the event handler, or nil if no event handler had been defined.

`next_event_nb` behaves exactly like `next_event`, except that `next_event_nb` (nb stands for non-blocking) returns immediately with undefined if no event is waiting to be processed.

## Example

1. Here is the simplest use of `next_event`, causing Gamma to wait for and process the next event.

        Gamma> while(t) next_event();

2. This program does basically the same thing, creating a main loop for program event processing, but it features error protection as well.

        while (t)
        {
        	try
        	{
        		next_event();
        	}
        	catch
        	{
        		princ("last error: ", _last_error_," calling stack: ",
        			stack(),"\n");
        	}
        }

See the Emulating the PID Loop section of the PID Emulator chapter in the Cogent Tools Demo and Tutorials book for an example of this function used in context.

Prev | Home | Next
`flush_events` | Up | `remove_set_function`

Copyright 1995-2002 by Cogent Real-Time Systems, Inc.