2007-06-26 23:11:00 +04:00
/*
* event . h : event loop for monitoring file handles
*
* Copyright ( C ) 2007 Daniel P . Berrange
* Copyright ( C ) 2007 Red Hat , Inc .
*
* This library is free software ; you can redistribute it and / or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation ; either
* version 2.1 of the License , or ( at your option ) any later version .
*
* This library is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the GNU
* Lesser General Public License for more details .
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place , Suite 330 , Boston , MA 02111 - 1307 USA
*
* Author : Daniel P . Berrange < berrange @ redhat . com >
*/
# ifndef __VIRTD_EVENT_H__
2010-03-09 21:22:22 +03:00
# define __VIRTD_EVENT_H__
2007-06-26 23:11:00 +04:00
2010-03-09 21:22:22 +03:00
# include "internal.h"
2007-06-26 23:11:00 +04:00
/**
2007-06-27 02:51:01 +04:00
* virEventAddHandleImpl : register a callback for monitoring file handle events
2007-06-26 23:11:00 +04:00
*
* @ fd : file handle to monitor for events
2008-02-29 15:53:10 +03:00
* @ events : bitset of events to watch from POLLnnn constants
* @ cb : callback to invoke when an event occurs
2007-06-26 23:11:00 +04:00
* @ opaque : user data to pass to callback
*
* returns - 1 if the file handle cannot be registered , 0 upon success
*/
2008-11-19 19:24:01 +03:00
int virEventAddHandleImpl ( int fd , int events ,
virEventHandleCallback cb ,
void * opaque ,
virFreeCallback ff ) ;
2007-06-26 23:11:00 +04:00
2007-09-19 05:27:32 +04:00
/**
* virEventUpdateHandleImpl : change event set for a monitored file handle
*
2008-11-19 19:19:36 +03:00
* @ watch : watch whose handle to update
2008-02-29 15:53:10 +03:00
* @ events : bitset of events to watch from POLLnnn constants
2007-09-19 05:27:32 +04:00
*
* Will not fail if fd exists
*/
2008-11-19 19:19:36 +03:00
void virEventUpdateHandleImpl ( int watch , int events ) ;
2007-09-19 05:27:32 +04:00
2007-06-26 23:11:00 +04:00
/**
2007-06-27 02:51:01 +04:00
* virEventRemoveHandleImpl : unregister a callback from a file handle
2007-06-26 23:11:00 +04:00
*
2008-11-19 19:19:36 +03:00
* @ watch : watch whose handle to remove
2007-06-26 23:11:00 +04:00
*
* returns - 1 if the file handle was not registered , 0 upon success
*/
2008-11-19 19:19:36 +03:00
int virEventRemoveHandleImpl ( int watch ) ;
2007-06-26 23:11:00 +04:00
/**
2007-06-27 02:51:01 +04:00
* virEventAddTimeoutImpl : register a callback for a timer event
2007-06-26 23:11:00 +04:00
*
2007-09-19 05:27:32 +04:00
* @ frequency : time between events in milliseconds
2008-02-29 15:53:10 +03:00
* @ cb : callback to invoke when an event occurs
2007-06-26 23:11:00 +04:00
* @ opaque : user data to pass to callback
*
2007-09-19 05:27:32 +04:00
* Setting frequency to - 1 will disable the timer . Setting the frequency
* to zero will cause it to fire on every event loop iteration .
*
2007-06-26 23:11:00 +04:00
* returns - 1 if the file handle cannot be registered , a positive
* integer timer id upon success
*/
2008-11-19 19:24:01 +03:00
int virEventAddTimeoutImpl ( int frequency ,
virEventTimeoutCallback cb ,
void * opaque ,
virFreeCallback ff ) ;
2007-09-19 05:27:32 +04:00
/**
* virEventUpdateTimeoutImpl : change frequency for a timer
*
* @ timer : timer id to change
* @ frequency : time between events in milliseconds
*
* Setting frequency to - 1 will disable the timer . Setting the frequency
* to zero will cause it to fire on every event loop iteration .
*
* Will not fail if timer exists
*/
void virEventUpdateTimeoutImpl ( int timer , int frequency ) ;
2007-06-26 23:11:00 +04:00
/**
2007-06-27 02:51:01 +04:00
* virEventRemoveTimeoutImpl : unregister a callback for a timer
2007-06-26 23:11:00 +04:00
*
* @ timer : the timer id to remove
*
* returns - 1 if the timer was not registered , 0 upon success
*/
2007-06-27 02:51:01 +04:00
int virEventRemoveTimeoutImpl ( int timer ) ;
2007-06-26 23:11:00 +04:00
2008-12-05 01:14:15 +03:00
/**
* virEventInit : Initialize the event loop
*
* returns - 1 if initialization failed
*/
int virEventInit ( void ) ;
2007-06-26 23:11:00 +04:00
/**
* virEventRunOnce : run a single iteration of the event loop .
*
* Blocks the caller until at least one file handle has an
* event or the first timer expires .
*
* returns - 1 if the event monitoring failed
*/
int virEventRunOnce ( void ) ;
2008-11-05 02:33:57 +03:00
int
virEventHandleTypeToPollEvent ( int events ) ;
int
virPollEventToEventHandleType ( int events ) ;
2008-12-05 01:14:15 +03:00
/**
* virEventInterrupt : wakeup any thread waiting in poll ( )
*
* return - 1 if wakup failed
*/
int virEventInterrupt ( void ) ;
2008-11-05 02:33:57 +03:00
2007-06-26 23:11:00 +04:00
# endif /* __VIRTD_EVENT_H__ */