Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
guo450212436
et
提交
de58c834
E
et
项目概览
guo450212436
/
et
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
et
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
de58c834
编写于
10月 19, 2019
作者:
T
tanghai
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Mailbox协程锁放到Mailbox的方法中
上级
92fcff88
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
56 addition
and
57 deletion
+56
-57
Server/Hotfix/Module/Actor/MailBoxComponentSystem.cs
Server/Hotfix/Module/Actor/MailBoxComponentSystem.cs
+17
-14
Server/Hotfix/Module/Message/InnerMessageDispatcherHelper.cs
Server/Hotfix/Module/Message/InnerMessageDispatcherHelper.cs
+39
-43
未找到文件。
Server/Hotfix/Module/Actor/MailBoxComponentSystem.cs
浏览文件 @
de58c834
...
...
@@ -25,21 +25,24 @@ namespace ETHotfix
{
public
static
async
ETTask
Handle
(
this
MailBoxComponent
self
,
Session
session
,
IActorMessage
message
)
{
switch
(
self
.
MailboxType
)
using
(
await
CoroutineLockComponent
.
Instance
.
Wait
(
CoroutineLockType
.
Mailbox
,
message
.
ActorId
)
)
{
case
MailboxType
.
GateSession
:
IActorMessage
iActorMessage
=
message
as
IActorMessage
;
// 发送给客户端
Session
clientSession
=
self
.
Parent
as
Session
;
iActorMessage
.
ActorId
=
0
;
clientSession
.
Send
(
iActorMessage
);
break
;
case
MailboxType
.
MessageDispatcher
:
await
ActorMessageDispatcherComponent
.
Instance
.
Handle
(
self
.
Parent
,
session
,
message
);
break
;
case
MailboxType
.
UnOrderMessageDispatcher
:
self
.
HandleInner
(
session
,
message
).
Coroutine
();
break
;
switch
(
self
.
MailboxType
)
{
case
MailboxType
.
GateSession
:
IActorMessage
iActorMessage
=
message
as
IActorMessage
;
// 发送给客户端
Session
clientSession
=
self
.
Parent
as
Session
;
iActorMessage
.
ActorId
=
0
;
clientSession
.
Send
(
iActorMessage
);
break
;
case
MailboxType
.
MessageDispatcher
:
await
ActorMessageDispatcherComponent
.
Instance
.
Handle
(
self
.
Parent
,
session
,
message
);
break
;
case
MailboxType
.
UnOrderMessageDispatcher
:
self
.
HandleInner
(
session
,
message
).
Coroutine
();
break
;
}
}
}
...
...
Server/Hotfix/Module/Message/InnerMessageDispatcherHelper.cs
浏览文件 @
de58c834
...
...
@@ -13,63 +13,59 @@
{
long
replyId
=
IdGenerater
.
GetProcessId
(
iActorRequest
.
ActorId
);
iActorRequest
.
ActorId
=
iActorRequest
.
ActorId
&
IdGenerater
.
HeadMask
|
IdGenerater
.
Head
;
using
(
await
CoroutineLockComponent
.
Instance
.
Wait
(
CoroutineLockType
.
Mailbox
,
iActorRequest
.
ActorId
))
string
address
=
StartConfigComponent
.
Instance
.
GetProcessInnerAddress
(
replyId
);
Session
ss
=
NetInnerComponent
.
Instance
.
Get
(
address
);
Entity
entity
=
Game
.
EventSystem
.
Get
(
iActorRequest
.
ActorId
);
if
(
entity
==
null
)
{
string
address
=
StartConfigComponent
.
Instance
.
GetProcessInnerAddress
(
replyId
);
Session
ss
=
NetInnerComponent
.
Instance
.
Get
(
address
);
Entity
entity
=
Game
.
EventSystem
.
Get
(
iActorRequest
.
ActorId
);
if
(
entity
==
null
)
Log
.
Warning
(
$"not found actor:
{
MongoHelper
.
ToJson
(
iActorRequest
)}
"
);
ActorResponse
response
=
new
ActorResponse
{
Log
.
Warning
(
$"not found actor:
{
MongoHelper
.
ToJson
(
iActorRequest
)}
"
);
ActorResponse
response
=
new
ActorResponse
{
Error
=
ErrorCode
.
ERR_NotFoundActor
,
RpcId
=
iActorRequest
.
RpcId
,
};
ss
.
Reply
(
response
);
return
;
}
Error
=
ErrorCode
.
ERR_NotFoundActor
,
RpcId
=
iActorRequest
.
RpcId
,
};
ss
.
Reply
(
response
);
return
;
}
MailBoxComponent
mailBoxComponent
=
entity
.
GetComponent
<
MailBoxComponent
>();
if
(
mailBoxComponent
==
null
)
MailBoxComponent
mailBoxComponent
=
entity
.
GetComponent
<
MailBoxComponent
>();
if
(
mailBoxComponent
==
null
)
{
ActorResponse
response
=
new
ActorResponse
{
ActorResponse
response
=
new
ActorResponse
{
Error
=
ErrorCode
.
ERR_ActorNoMailBoxComponent
,
RpcId
=
iActorRequest
.
RpcId
,
};
ss
.
Reply
(
response
);
Log
.
Error
(
$"actor not add MailBoxComponent:
{
entity
.
GetType
().
Name
}
{
iActorRequest
}
"
);
return
;
}
await
mailBoxComponent
.
Handle
(
ss
,
iActorRequest
);
Error
=
ErrorCode
.
ERR_ActorNoMailBoxComponent
,
RpcId
=
iActorRequest
.
RpcId
,
};
ss
.
Reply
(
response
);
Log
.
Error
(
$"actor not add MailBoxComponent:
{
entity
.
GetType
().
Name
}
{
iActorRequest
}
"
);
return
;
}
await
mailBoxComponent
.
Handle
(
ss
,
iActorRequest
);
}
public
static
async
ETVoid
HandleIActorMessage
(
Session
session
,
IActorMessage
iActorMessage
)
{
long
replyId
=
IdGenerater
.
GetProcessId
(
iActorMessage
.
ActorId
);
iActorMessage
.
ActorId
=
iActorMessage
.
ActorId
&
IdGenerater
.
HeadMask
|
IdGenerater
.
Head
;
using
(
await
CoroutineLockComponent
.
Instance
.
Wait
(
CoroutineLockType
.
Mailbox
,
iActorMessage
.
ActorId
))
Entity
entity
=
Game
.
EventSystem
.
Get
(
iActorMessage
.
ActorId
);
if
(
entity
==
null
)
{
Entity
entity
=
Game
.
EventSystem
.
Get
(
iActorMessage
.
ActorId
);
if
(
entity
==
null
)
{
Log
.
Error
(
$"not found actor:
{
MongoHelper
.
ToJson
(
iActorMessage
)}
"
);
return
;
}
Log
.
Error
(
$"not found actor:
{
MongoHelper
.
ToJson
(
iActorMessage
)}
"
);
return
;
}
MailBoxComponent
mailBoxComponent
=
entity
.
GetComponent
<
MailBoxComponent
>();
if
(
mailBoxComponent
==
null
)
{
Log
.
Error
(
$"actor not add MailBoxComponent:
{
entity
.
GetType
().
Name
}
{
iActorMessage
}
"
);
return
;
}
Session
ss
=
NetInnerComponent
.
Instance
.
Get
(
replyId
);
await
mailBoxComponent
.
Handle
(
ss
,
iActorMessage
);
MailBoxComponent
mailBoxComponent
=
entity
.
GetComponent
<
MailBoxComponent
>();
if
(
mailBoxComponent
==
null
)
{
Log
.
Error
(
$"actor not add MailBoxComponent:
{
entity
.
GetType
().
Name
}
{
iActorMessage
}
"
);
return
;
}
Session
ss
=
NetInnerComponent
.
Instance
.
Get
(
replyId
);
await
mailBoxComponent
.
Handle
(
ss
,
iActorMessage
);
}
}
}
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录