cdev-1.7.2n
This commit is contained in:
65
extensions/cdevGenericServer/include/cdevReactor.h
Normal file
65
extensions/cdevGenericServer/include/cdevReactor.h
Normal file
@@ -0,0 +1,65 @@
|
||||
#ifndef _CDEV_REACTOR_H_
|
||||
#define _CDEV_REACTOR_H_ 1
|
||||
|
||||
#include "cdevTime.h"
|
||||
#include "cdevHandleSet.h"
|
||||
#include "cdevEventHandler.h"
|
||||
|
||||
class CDEV_REACTOR_API cdevReactor
|
||||
{
|
||||
public:
|
||||
typedef enum {
|
||||
INPUT = 0,
|
||||
OUTPUT = 1,
|
||||
EXCEPTION = 2,
|
||||
SIGNAL = 3
|
||||
} REACTOR_EVENT;
|
||||
|
||||
typedef enum {
|
||||
REACTOR_ERROR = -1,
|
||||
SUCCESS = 0,
|
||||
INVALID_HANDLE = 1,
|
||||
INVALID_HANDLER = 2,
|
||||
HANDLE_EXISTS = 3,
|
||||
UNKNOWN_HANDLER = 4,
|
||||
INVALID_TIMEOUT = 5
|
||||
} REACTOR_RESULT;
|
||||
|
||||
typedef enum {
|
||||
UNTIL_TIMEOUT = 0,
|
||||
UNTIL_EVENT = 1
|
||||
} HANDLE_EVENT_FLAG;
|
||||
|
||||
protected:
|
||||
static int netInitCount;
|
||||
|
||||
int maxEntries;
|
||||
int size;
|
||||
cdevHandleSet read_set;
|
||||
cdevHandleSet write_set;
|
||||
cdevHandleSet except_set;
|
||||
cdevEventHandler ** handlers;
|
||||
cdevEventHandler * timers;
|
||||
|
||||
private:
|
||||
void calculateMask ( void );
|
||||
int calculateTimeout ( cdevTime defaultPeriod, struct timeval &timeout );
|
||||
int handleFileEvent ( cdevHandleSet * fds, REACTOR_EVENT event);
|
||||
public:
|
||||
cdevReactor ( void );
|
||||
virtual ~cdevReactor ( void );
|
||||
|
||||
virtual int checkHandlers ( void );
|
||||
virtual int registerHandler ( cdevEventHandler * handler, unsigned mask );
|
||||
virtual int removeHandler ( cdevEventHandler * handler );
|
||||
virtual int removeHandler ( int fd );
|
||||
virtual int extractHandler ( cdevEventHandler * handler );
|
||||
virtual int getHandler ( int fd, cdevEventHandler * &handler );
|
||||
|
||||
virtual int registerTimer ( cdevEventHandler * timer );
|
||||
virtual int cancelTimer ( cdevEventHandler * timer );
|
||||
|
||||
virtual int handleEvents ( cdevTime period = -1.0, int flags = UNTIL_TIMEOUT );
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user