Skip to content

Commit 1be5f48

Browse files
committed
actor_client net::connect actor_server 去掉同步等待改为异步
1 parent 969bda4 commit 1be5f48

File tree

3 files changed

+54
-34
lines changed

3 files changed

+54
-34
lines changed

public/cpp/actor/actor_base/actor_client.cpp

Lines changed: 44 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -83,45 +83,55 @@ namespace ngl
8383
naddress::set_session(aserverid, asession);
8484
}
8585

86-
void actor_client::actor_server_register(i32_serverid aactorserver)
86+
bool actor_client::handle(const message<np_connect_actor_server>& adata)
8787
{
88-
if (nconfig::m_nodetype == NODE_TYPE::ROBOT)
89-
return;
9088
const tab_servers* tab = ttab_servers::tab();
91-
const tab_servers* tabactor = ttab_servers::tab(aactorserver);
89+
const tab_servers* tabactor = ttab_servers::tab(adata.get_data()->m_serverid);
9290
i64_actorid lactorid = id_guid();
93-
nets::connect(aactorserver, [tab, tabactor, lactorid](int asession)
94-
{
95-
i64_actorid lactorserve = actor_server::actorid();
96-
set_node(tabactor->m_id, asession);
97-
naddress::actor_add(tabactor->m_id, lactorserve);
9891

99-
//注册结点
100-
np_actornode_register lpram
92+
i64_actorid lactorserve = actor_server::actorid();
93+
set_node(tabactor->m_id, adata.get_data()->m_session);
94+
naddress::actor_add(tabactor->m_id, lactorserve);
95+
96+
//注册结点
97+
np_actornode_register lpram
98+
{
99+
.m_node
100+
{
101+
.m_name = std::format(
102+
"node<id:{},type:{},name:{},tcount:{},area:{}>",
103+
tab->m_id, em<NODE_TYPE>::get_name(tab->m_type), tab->m_name, tab->m_tcount, tab->m_area
104+
),
105+
.m_nodetype = tab->m_type,
106+
.m_serverid = tab->m_id,
107+
}
108+
};
109+
actor_manage::getInstance().get_type(lpram.m_node.m_actortype);
110+
naddress::ergodic(
111+
[&lpram](const std::map<nguid, i32_serverid>& aactorserver, const std::map<i32_serverid, actor_node_session>&)
112+
{
113+
for (const std::pair<const nguid, i32_serverid>& item : aactorserver)
101114
{
102-
.m_node
103-
{
104-
.m_name = std::format(
105-
"node<id:{},type:{},name:{},tcount:{},area:{}>",
106-
tab->m_id, em<NODE_TYPE>::get_name(tab->m_type), tab->m_name, tab->m_tcount, tab->m_area
107-
),
108-
.m_nodetype = tab->m_type,
109-
.m_serverid = tab->m_id,
110-
}
111-
};
112-
actor_manage::getInstance().get_type(lpram.m_node.m_actortype);
113-
naddress::ergodic(
114-
[&lpram](const std::map<nguid, i32_serverid>& aactorserver, const std::map<i32_serverid, actor_node_session>&)
115-
{
116-
for (const std::pair<const nguid, i32_serverid>& item : aactorserver)
117-
{
118-
if (lpram.m_node.m_serverid == item.second)
119-
lpram.m_add.push_back(item.first);
120-
}
121-
return true;
122-
});
123-
nets::sendbysession(asession, lpram, lactorserve, lactorid);
124-
}, true, true);
115+
if (lpram.m_node.m_serverid == item.second)
116+
lpram.m_add.push_back(item.first);
117+
}
118+
return true;
119+
});
120+
nets::sendbysession(adata.get_data()->m_session, lpram, lactorserve, lactorid);
121+
return true;
122+
}
123+
124+
void actor_client::actor_server_register(i32_serverid aactorserver)
125+
{
126+
if (nconfig::m_nodetype == NODE_TYPE::ROBOT)
127+
return;
128+
nets::connect(aactorserver, [this, aactorserver](int asession)
129+
{
130+
auto pro = std::make_shared<np_connect_actor_server>();
131+
pro->m_serverid = aactorserver;
132+
pro->m_session = asession;
133+
actor::send_actor(id_guid(), pro);
134+
}, false, true);
125135
}
126136

127137
void actor_client::actor_server_register()

public/cpp/actor/actor_base/actor_client.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,9 @@ namespace ngl
5656
//# actor_client的actorid
5757
static i64_actorid actorid();
5858

59+
//# np_connect_actor_server
60+
bool handle(const message<np_connect_actor_server>& adata);
61+
5962
//np_actor_server_register
6063
bool handle(const message<np_actor_server_register>& adata);
6164

public/cpp/actor/nprotocol.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,13 @@ namespace ngl
5959
def_portocol(np_actor_server_register)
6060
};
6161

62+
struct np_connect_actor_server
63+
{
64+
int32_t m_serverid;
65+
int32_t m_session;
66+
def_portocol(np_connect_actor_server, m_serverid, m_session)
67+
};
68+
6269
// ---- [actor client -> actor server] register
6370
// 注册结点
6471
struct np_actornode_register

0 commit comments

Comments
 (0)