Lines Matching refs:ctx
138 thread_context_t ctx; in CreateContext() local
140 ctx = (thread_context_t)calloc(1, sizeof(struct thread_context)); in CreateContext()
141 if (!ctx) { in CreateContext()
147 ctx->mctx = mctx; in CreateContext()
148 ctx->core = mctx->cpu; in CreateContext()
150 g_mctx[ctx->core] = mctx; in CreateContext()
152 return ctx; in CreateContext()
156 DestroyContext(thread_context_t ctx) in DestroyContext() argument
158 g_stat[ctx->core] = NULL; in DestroyContext()
159 free(ctx); in DestroyContext()
163 CreateConnection(thread_context_t ctx) in CreateConnection() argument
165 mctx_t mctx = ctx->mctx; in CreateConnection()
180 memset(&ctx->wvars[sockid], 0, sizeof(struct wget_vars)); in CreateConnection()
201 ctx->started++; in CreateConnection()
202 ctx->pending++; in CreateConnection()
203 ctx->stat.connects++; in CreateConnection()
207 mtcp_epoll_ctl(mctx, ctx->ep, MOS_EPOLL_CTL_ADD, sockid, &ev); in CreateConnection()
213 CloseConnection(thread_context_t ctx, int sockid) in CloseConnection() argument
215 mtcp_epoll_ctl(ctx->mctx, ctx->ep, MOS_EPOLL_CTL_DEL, sockid, NULL); in CloseConnection()
216 mtcp_close(ctx->mctx, sockid); in CloseConnection()
217 ctx->pending--; in CloseConnection()
218 ctx->done++; in CloseConnection()
219 assert(ctx->pending >= 0); in CloseConnection()
220 …while (/*ctx->pending*/ mtcp_get_connection_cnt(ctx->mctx) < concurrency && ctx->started < ctx->ta… in CloseConnection()
221 if (CreateConnection(ctx) < 0) { in CloseConnection()
222 done[ctx->core] = TRUE; in CloseConnection()
229 SendHTTPRequest(thread_context_t ctx, int sockid, struct wget_vars *wv) in SendHTTPRequest() argument
259 wr = mtcp_write(ctx->mctx, sockid, request, len); in SendHTTPRequest()
263 CloseConnection(ctx, sockid); in SendHTTPRequest()
265 ctx->stat.writes += wr; in SendHTTPRequest()
271 mtcp_epoll_ctl(ctx->mctx, ctx->ep, MOS_EPOLL_CTL_MOD, sockid, &ev); in SendHTTPRequest()
289 DownloadNext(thread_context_t ctx, int sockid, struct wget_vars *wv) in DownloadNext() argument
291 mctx_t mctx = ctx->mctx; in DownloadNext()
298 ctx->stat.completes++; in DownloadNext()
315 ctx->stat.sum_resp_time += tdiff; in DownloadNext()
316 if (tdiff > ctx->stat.max_resp_time) in DownloadNext()
317 ctx->stat.max_resp_time = tdiff; in DownloadNext()
319 ctx->done++; in DownloadNext()
322 memset(&ctx->wvars[sockid], 0, sizeof(struct wget_vars)); in DownloadNext()
324 ctx->started++; in DownloadNext()
328 mtcp_epoll_ctl(mctx, ctx->ep, MOS_EPOLL_CTL_MOD, sockid, &ev); in DownloadNext()
334 DownloadComplete(thread_context_t ctx, int sockid, struct wget_vars *wv) in DownloadComplete() argument
337 mctx_t mctx = ctx->mctx; in DownloadComplete()
343 CloseConnection(ctx, sockid); in DownloadComplete()
344 ctx->stat.completes++; in DownloadComplete()
361 ctx->stat.sum_resp_time += tdiff; in DownloadComplete()
362 if (tdiff > ctx->stat.max_resp_time) in DownloadComplete()
363 ctx->stat.max_resp_time = tdiff; in DownloadComplete()
372 HandleReadEvent(thread_context_t ctx, int sockid, struct wget_vars *wv) in HandleReadEvent() argument
374 mctx_t mctx = ctx->mctx; in HandleReadEvent()
384 ctx->stat.reads += rd; in HandleReadEvent()
405 CloseConnection(ctx, sockid); in HandleReadEvent()
422 ctx->stat.errors++; in HandleReadEvent()
423 ctx->errors++; in HandleReadEvent()
424 CloseConnection(ctx, sockid); in HandleReadEvent()
458 if (keep_alive && ctx->started < ctx->target) in HandleReadEvent()
459 DownloadNext(ctx, sockid, wv); in HandleReadEvent()
461 DownloadComplete(ctx, sockid, wv); in HandleReadEvent()
471 DownloadComplete(ctx, sockid, wv); in HandleReadEvent()
473 ctx->stat.errors++; in HandleReadEvent()
474 ctx->incompletes++; in HandleReadEvent()
475 CloseConnection(ctx, sockid); in HandleReadEvent()
482 ctx->stat.errors++; in HandleReadEvent()
483 ctx->errors++; in HandleReadEvent()
484 CloseConnection(ctx, sockid); in HandleReadEvent()
610 thread_context_t ctx; in InitWget() local
617 ctx = CreateContext(mctx); in InitWget()
618 if (!ctx) in InitWget()
620 g_ctx[core] = ctx; in InitWget()
621 g_stat[core] = &ctx->stat; in InitWget()
630 ctx->target = flows[core]; in InitWget()
633 ctx->maxevents = max_fds * 3; in InitWget()
634 ep = mtcp_epoll_create(mctx, ctx->maxevents); in InitWget()
639 ctx->events = (struct mtcp_epoll_event *) in InitWget()
640 calloc(ctx->maxevents, sizeof(struct mtcp_epoll_event)); in InitWget()
641 if (!ctx->events) { in InitWget()
645 ctx->ep = ep; in InitWget()
647 ctx->wvars = (struct wget_vars *)calloc(max_fds, sizeof(struct wget_vars)); in InitWget()
648 if (!ctx->wvars) { in InitWget()
653 ctx->started = ctx->done = ctx->pending = 0; in InitWget()
654 ctx->errors = ctx->incompletes = 0; in InitWget()
656 *app_ctx = ctx; in InitWget()
672 thread_context_t ctx = *app_ctx; in RunWget() local
673 int core = ctx->core; in RunWget()
691 …while (/*ctx->pending*/ mtcp_get_connection_cnt(ctx->mctx) < concurrency && ctx->started < ctx->ta… in RunWget()
692 if (CreateConnection(ctx) < 0) { in RunWget()
698 nevents = mtcp_epoll_wait(mctx, ctx->ep, in RunWget()
699 ctx->events, ctx->maxevents, ctx->pending ? -1 : 10); in RunWget()
700 ctx->stat.waits++; in RunWget()
709 ctx->stat.events += nevents; in RunWget()
714 if (ctx->events[i].events & MOS_EPOLLERR) { in RunWget()
719 core, ctx->events[i].data.sockid); in RunWget()
720 ctx->stat.errors++; in RunWget()
721 ctx->errors++; in RunWget()
722 if (mtcp_getsockopt(mctx, ctx->events[i].data.sock, in RunWget()
725 ctx->stat.timedout++; in RunWget()
727 CloseConnection(ctx, ctx->events[i].data.sock); in RunWget()
729 } else if (ctx->events[i].events & MOS_EPOLLIN) { in RunWget()
730 HandleReadEvent(ctx, in RunWget()
731 ctx->events[i].data.sock, in RunWget()
732 &ctx->wvars[ctx->events[i].data.sock]); in RunWget()
734 } else if (ctx->events[i].events == MOS_EPOLLOUT) { in RunWget()
735 struct wget_vars *wv = &ctx->wvars[ctx->events[i].data.sock]; in RunWget()
738 SendHTTPRequest(ctx, ctx->events[i].data.sock, wv); in RunWget()
745 ctx->events[i].data.sock, in RunWget()
746 EventToString(ctx->events[i].events)); in RunWget()
751 if (ctx->done >= ctx->target) { in RunWget()
754 ctx->done, ctx->errors, ctx->incompletes); in RunWget()
763 DestroyContext(ctx); in RunWget()