X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/e2641e09cc0daf44f63f654230f72d22acf3a9af..a1b1c1ea3adb864c8c2e3feb4eaed890a9b505cf:/src/ae.h diff --git a/src/ae.h b/src/ae.h index a9db18ed..f52a075e 100644 --- a/src/ae.h +++ b/src/ae.h @@ -33,8 +33,6 @@ #ifndef __AE_H__ #define __AE_H__ -#define AE_SETSIZE (1024*10) /* Max number of fd supported */ - #define AE_OK 0 #define AE_ERR -1 @@ -87,10 +85,12 @@ typedef struct aeFiredEvent { /* State of an event based program */ typedef struct aeEventLoop { - int maxfd; + int maxfd; /* highest file descriptor currently registered */ + int setsize; /* max number of file descriptors tracked */ long long timeEventNextId; - aeFileEvent events[AE_SETSIZE]; /* Registered events */ - aeFiredEvent fired[AE_SETSIZE]; /* Fired events */ + time_t lastTime; /* Used to detect system clock skew */ + aeFileEvent *events; /* Registered events */ + aeFiredEvent *fired; /* Fired events */ aeTimeEvent *timeEventHead; int stop; void *apidata; /* This is used for polling API specific data */ @@ -98,12 +98,13 @@ typedef struct aeEventLoop { } aeEventLoop; /* Prototypes */ -aeEventLoop *aeCreateEventLoop(void); +aeEventLoop *aeCreateEventLoop(int setsize); void aeDeleteEventLoop(aeEventLoop *eventLoop); void aeStop(aeEventLoop *eventLoop); int aeCreateFileEvent(aeEventLoop *eventLoop, int fd, int mask, aeFileProc *proc, void *clientData); void aeDeleteFileEvent(aeEventLoop *eventLoop, int fd, int mask); +int aeGetFileEvents(aeEventLoop *eventLoop, int fd); long long aeCreateTimeEvent(aeEventLoop *eventLoop, long long milliseconds, aeTimeProc *proc, void *clientData, aeEventFinalizerProc *finalizerProc);