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

PhEventNext()

Provide synchronous event notification

Synopsis:

int PhEventNext( void *buffer,
                 unsigned size );

Description:

This function provides a completely synchronous event-notification mechanism. It causes the application to become REPLY-blocked on the currently attached Photon channel until an event occurs.

If the application's event queue contains an event when this call is made, Photon replies immediately with that event.

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.
-1
An error occurred.

Examples:

#define EVENT_SIZE    sizeof( PhEvent_t ) + 1000

main( int argc, char *argv[] )
{
     PhEvent_t *event;
     
     if( initialize() == -1 )
          exit( EXIT_FAILURE );
     
     if( NULL == ( event = malloc( EVENT_SIZE ) ) )
          exit( EXIT_FAILURE );
     
     while( 1 ) {
          switch( PhEventNext( event, EVENT_SIZE ) ) {
              case Ph_EVENT_MSG:
                 PtEventHandler( event );
                 break;
              case -1:
                 perror( "PhEventNext failed" );
                 break;
     }
   }
}

Classification:

Photon

Safety:
Interrupt handler No
Signal handler No
Thread No

See also:

PhAttach(), PhEventPeek(), PhEventRead(), PhGetMsgSize()


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