[Previous] [Contents] [Index] [Next]

PhEventPeek()

Check to see if an event is pending

Synopsis:

int PhEventPeek( void *buffer,
                 unsigned size );

Description:

This function lets you check if an event is pending on the current Photon channel:

Since this function is nonblocking, you should find it useful for applications that need to run continuously and still interact with Photon.

Returns:

Ph_EVENT_MSG
Successful completion.
Ph_RESIZE_MSG
The Ph_DYNAMIC_BUFFER flag was set in PhAttach(), and there's a pending Photon event that's larger than the client's event buffer. This event that indicates how large the client's buffer needs to be to receive the entire event message.
0
No message was available.
-1
An error occurred.

Examples:

#define EVENT_SIZE    sizeof( PhEvent_t ) + 1000

main( int argc, char *argv[] )
{
     int go = 1, count = 0;
     PhEvent_t *event;

     if( initialize() == -1 )
          exit( EXIT_FAILURE );
     
     if( NULL == ( event = malloc( EVENT_SIZE ) ) )
          exit( EXIT_FAILURE );
     
     while( go ) {
          if(( ++count & 15) == 0) {
               PgFlush();
               switch( PhEventPeek( event, EVENT_SIZE ) {
                    case Ph_EVENT_MSG:
                       PtEventHandler( event );
                       break;
                    case -1:
                       perror( "PhEventPeek failed" );
                       break;
               }
          }
          iterate_graphics_process();
     }
     exit( 0 );
}

Classification:

Photon

Safety:
Interrupt handler No
Signal handler No
Thread No

See also:

PhAttach(), PhEventArm(), PhEventNext(), PhEventRead()


[Previous] [Contents] [Index] [Next]