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

Method transfer

app/master/tools/master_dispatch/server/client/ManagerTimer.cpp:13–58  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

11}
12
13bool ManagerTimer::transfer(ClientConnection* client)
14{
15 ServerConnection* server;
16 const char* peer;
17 char buf[256];
18 int ret;
19
20 // �ӷ�������ӹ���������ȡ����������С��һ��
21 // ����˶��󣬲��������ͻ������Ӵ��ݸ�����
22 // һֱ���ɹ������д��䶼ʧ��Ϊֹ
23
24 while (true)
25 {
26 server = ServerManager::get_instance().min();
27 if (server == NULL)
28 {
29 logger_error("no server available for client: %s",
30 client->get_peer());
31 return false;
32 }
33
34 peer = client->get_peer();
35 if (peer == NULL)
36 peer = "unkonwn";
37 memset(buf, 0, sizeof(buf));
38 snprintf(buf, sizeof(buf), "%s", peer);
39
40 // ���ͻ������Ӵ��ݸ�����ˣ����ʧ�ܣ�������һ��
41 // ����ˣ�ͬʱ��ʧ�ܵķ���˴ӷ���˹���������ɾ��
42 ret = acl_write_fd(server->sock_handle(), buf,
43 strlen(buf), client->sock_handle());
44 if (ret == -1)
45 {
46 logger_error("write fd to backend error: %s",
47 acl::last_serror());
48 ServerManager::get_instance().del(server);
49 server->close();
50 }
51 // ���ͳɹ����ȸ��÷�����̵Ŀͻ�����������1���Ա����µ���
52 // ���ӿ����л������������������
53 else
54 server->inc_conns();
55
56 return true;
57 }
58}
59
60void ManagerTimer::timer_callback(unsigned int)
61{

Callers

nothing calls this directly

Calls 7

acl_write_fdFunction · 0.85
minMethod · 0.80
last_serrorFunction · 0.50
get_peerMethod · 0.45
sock_handleMethod · 0.45
delMethod · 0.45
closeMethod · 0.45

Tested by

no test coverage detected