FreeStrBuf(&IO->HttpReq.ReplyData);
FreeURL(&IO->ConnectMe);
RemoveContext(IO->CitContext);
- free(IO);
+ IO->Terminate(IO);
}
}
}
int evcurl_init(AsyncIO *IO,
void *CustomData,
const char* Desc,
- IO_CallBack CallBack)
+ IO_CallBack CallBack,
+ IO_CallBack Terminate)
{
CURLcode sta;
CURL *chnd;
CtdlLogPrintf(CTDL_DEBUG,"EVCURL: evcurl_init called ms\n");
IO->HttpReq.attached = 0;
IO->SendDone = CallBack;
+ IO->Terminate = Terminate;
chnd = IO->HttpReq.chnd = curl_easy_init();
if (!chnd)
{
ev_run (event_base, 0);
- CtdlClearSystemContext();
+///what todo here? CtdlClearSystemContext();
ev_loop_destroy (EV_DEFAULT_UC);
DeleteHash(&QueueEvents);
ev_async DBAddJob;
ev_async DBExitEventLoop;
+extern void ShutDownDBCLient(AsyncIO *IO);
+
static void DBQueueEventAddCallback(EV_P_ ev_async *w, int revents)
{
HashList *q;
while (GetNextHashPos(q, It, &len, &Key, &v))
{
IOAddHandler *h = v;
- h->EvAttch(h->IO);
+ eNextState rc;
+ rc = h->EvAttch(h->IO);
+ switch (rc)
+ {
+ case eAbort:
+ ShutDownDBCLient(h->IO);
+ default:
+ break;
+ }
}
DeleteHashPos(&It);
DeleteHashContent(&q);
static void DBEventExitCallback(EV_P_ ev_async *w, int revents)
{
- ev_break(event_db, EVBREAK_ALL);
-
CtdlLogPrintf(CTDL_DEBUG, "EVENT Q exiting.\n");
+ ev_break(event_db, EVBREAK_ALL);
}
ev_run (event_db, 0);
- CtdlClearSystemContext();
+//// what to do here? CtdlClearSystemContext();
ev_loop_destroy (event_db);
DeleteHash(&DBQueueEvents);