X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Fevent_client.h;h=2b5b698bd5b936f5572a57c977f0322968ffe521;hb=0c9cb3fbc797de34635bc6748937b710a4d37bcb;hp=8777a34333d9509c2a30f7a134d1c30fb3530ff2;hpb=aea6f452f4ae9c17d942d2eabab6a75671f5c6d6;p=citadel.git diff --git a/citadel/event_client.h b/citadel/event_client.h index 8777a3433..2b5b698bd 100644 --- a/citadel/event_client.h +++ b/citadel/event_client.h @@ -153,6 +153,7 @@ typedef struct __evcares_data { IO_CallBack Fail; /* the dns lookup didn't work out. */ } evcares_data; + struct AsyncIO { long ID; ev_tstamp Now; @@ -193,7 +194,8 @@ struct AsyncIO { Timeout, /* Timeout handler;may also be conn. timeout */ ConnFail, /* What to do when one connection failed? */ ShutdownAbort,/* we're going down. make your piece. */ - NextDBOperation; /* Perform Database IO */ + NextDBOperation, /* Perform Database IO */ + ReAttachCB; /* on the hop from one Q to the other, this is the next CB */ /* if we have linereaders, maybe we want to read more lines before * the real application logic is called? */ @@ -219,6 +221,7 @@ typedef struct _IOAddHandler { } IOAddHandler; +inline static time_t EvGetNow(AsyncIO *IO) { return (time_t) IO->Now;} extern int DebugEventLoop; extern int DebugCAres; @@ -229,24 +232,6 @@ extern int DebugCAres; #define CCID ((CitContext*)IO->CitContext)?((CitContext*)IO->CitContext)->cs_pid:-1 -#define EVQ_syslog(LEVEL, FORMAT, ...) \ - EDBGLOG (LEVEL) syslog(LEVEL, "%sQ " FORMAT, IOSTR, __VA_ARGS__) - -#define EVQM_syslog(LEVEL, FORMAT) \ - EDBGLOG (LEVEL) syslog(LEVEL, "%s " FORMAT, IOSTR) - -#define EV_syslog(LEVEL, FORMAT, ...) \ - EDBGLOG (LEVEL) syslog(LEVEL, "%s[%ld]CC[%d] " FORMAT, IOSTR, IO->ID, CCID, __VA_ARGS__) - -#define EVM_syslog(LEVEL, FORMAT) \ - EDBGLOG (LEVEL) syslog(LEVEL, "%s[%ld]CC[%d] " FORMAT, IOSTR, IO->ID, CCID) - -#define EVNC_syslog(LEVEL, FORMAT, ...) \ - EDBGLOG (LEVEL) syslog(LEVEL, "%s[%ld] " FORMAT, IOSTR, IO->ID, __VA_ARGS__) - -#define EVNCM_syslog(LEVEL, FORMAT) EDBGLOG (LEVEL) syslog(LEVEL, "%s[%ld]" FORMAT, IOSTR, IO->ID) - - #define CDBGLOG() if (DebugCAres != 0) #define CEDBGLOG(LEVEL) if ((LEVEL != LOG_DEBUG) || (DebugCAres != 0)) #define EV_DNS_LOG_START(a) \ @@ -273,16 +258,9 @@ extern int DebugCAres; CDBGLOG () { syslog(LOG_DEBUG, "%s[%ld]CC[%d] * Init " #a " %p", IOSTR, IO->ID, CCID, &IO->a); \ EV_backtrace(IO);} -#define EV_DNS_syslog(LEVEL, FORMAT, ...) \ - CEDBGLOG (LEVEL) syslog(LEVEL, "%s[%ld]CC[%d] " FORMAT, IOSTR, IO->ID, CCID, __VA_ARGS__) - -#define EVM_DNS_syslog(LEVEL, FORMAT) \ - CEDBGLOG (LEVEL) syslog(LEVEL, "%s[%ld]CC[%d] " FORMAT, IOSTR, IO->ID, CCID) - void FreeAsyncIOContents(AsyncIO *IO); eNextState NextDBOperation(AsyncIO *IO, IO_CallBack CB); -eNextState QueueDBOperation(AsyncIO *IO, IO_CallBack CB); eNextState EventQueueDBOperation(AsyncIO *IO, IO_CallBack CB, int CloseFDs); void StopDBWatchers(AsyncIO *IO); eNextState QueueEventContext(AsyncIO *IO, IO_CallBack CB); @@ -320,12 +298,16 @@ void SetNextTimeout(AsyncIO *IO, double timeout); do { \ sta = curl_easy_setopt(chnd, (CURLOPT_##s), (v)); \ if (sta) { \ - EVQ_syslog(LOG_ERR, \ + syslog(LOG_ERR, \ "error setting option " #s \ " on curl handle: %s", \ curl_easy_strerror(sta)); \ } } while (0) +#define SET_EV_TIME(IO, BASE) \ + IO->Now = ev_now(BASE); \ + if (IO->CitContext != NULL) IO->CitContext->lastcmd = IO->Now; + void InitIOStruct(AsyncIO *IO, void *Data, eNextState NextState,