Spread 4.0.0 C API

Events Interface

The Event library is a utility library provided with Spread, but it is not required that you use it. It is simply provided to avoid everyone having to write their own event handling system. The interface is defined in sp_events.h.


#define NUM_PRIORITY    3
#define LOW_PRIORITY    0
#define MEDIUM_PRIORITY 1
#define HIGH_PRIORITY   2
#define NUM_FDTYPES     3
#define READ_FD         0
#define WRITE_FD        1
#define EXCEPT_FD       2

typedef struct dummy_time {
  long sec;
  long usec;
  
} sp_time;

#ifndef NULL
  #define NULL (void *)0
#endif

/* Event routines */
int E_init(void);
sp_time E_get_time(void);
sp_time E_sub_time( sp_time t, sp_time delta_t ); 
sp_time E_add_time( sp_time t, sp_time delta_t ); 

/* if t1 > t2  then returns  1; 
   if t1 < t2  then returns -1; 
   if t1 == t2 then returns  0; */ 
 
int     E_compare_time( sp_time t1, sp_time t2 );
int     E_queue( void (* func)( int code, void *data ), int code, void *data, sp_time delta_time );
        
/* Note: This does not dispose/free the data pointed at by the void *data pointer */
int     E_dequeue( void (* func)( int code, void *data ), int code, void *data );
void    E_delay( sp_time t );
int     E_attach_fd( int fd, int fd_type, void (* func)( int fd, int code, void *data), 
                     int code, void *data, int priority );
int     E_detach_fd( int fd, int fd_type );
int     E_set_active_threshold( int priority );
int     E_activate_fd( int fd, int fd_type );
int     E_deactivate_fd( int fd, int fd_type );
int     E_num_active( int priority );
void    E_handle_events(void);
void    E_exit_events(void);