MCPcopy Create free account
hub / github.com/acl-dev/acl / doRequest

Method doRequest

app/master/tools/master_dispatch/manager/client_servlet.cpp:399–437  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

397}
398
399bool client_servlet::doRequest(acl::HttpServletRequest& req,
400 acl::HttpServletResponse& res)
401{
402 // �������̣߳���������־��ѯ��������ѯ��־����
403
404 if (get_servers() == false)
405 return reply(req, res, "get all servers's addrs failed!");
406
407 // ��ʼ�����̳߳أ������߳��������е� TCP �ַ���������з�������״̬��Ϣ
408 std::vector<collect_client*> collecters;
409 message_manager* manager = new message_manager;
410 std::vector<acl::string>::const_iterator cit = servers_.begin();
411 int nthreads = 0;
412 for (; cit != servers_.end(); ++cit)
413 {
414 // �����������߳̽��д���
415 collect_client* collect = new collect_client(*manager,
416 (*cit).c_str());
417 collect->set_detachable(false);
418 collecters.push_back(collect);
419 nthreads++;
420 // �������̴߳�������
421 collect->start();
422 }
423
424 // �ȴ��������̵߳IJ�ѯ���
425 bool ok = wait_result(res, *manager, nthreads);
426
427 // ������ɾ�����е����߳��������
428 std::vector<collect_client*>::iterator it = collecters.begin();
429 for (; it != collecters.end(); ++it)
430 {
431 (*it)->wait();
432 delete (*it);
433 }
434
435 delete manager;
436 return ok;
437}
438
439bool client_servlet::wait_result(acl::HttpServletResponse& res,
440 message_manager& manager, int nthreads)

Callers

nothing calls this directly

Calls 6

beginMethod · 0.80
endMethod · 0.45
c_strMethod · 0.45
push_backMethod · 0.45
startMethod · 0.45
waitMethod · 0.45

Tested by

no test coverage detected