Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
JDChain
Bftsmart
提交
3427462a
B
Bftsmart
项目概览
JDChain
/
Bftsmart
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
Bftsmart
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
3427462a
编写于
1月 22, 2019
作者:
J
João Sousa
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
...
上级
523fead3
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
30 addition
and
18 deletion
+30
-18
bin/BFT-SMaRt.jar
bin/BFT-SMaRt.jar
+0
-0
src/bftsmart/clientsmanagement/ClientsManager.java
src/bftsmart/clientsmanagement/ClientsManager.java
+30
-18
未找到文件。
bin/BFT-SMaRt.jar
浏览文件 @
3427462a
无法预览此类型文件
src/bftsmart/clientsmanagement/ClientsManager.java
浏览文件 @
3427462a
...
...
@@ -31,6 +31,8 @@ import bftsmart.tom.leaderchange.RequestsTimer;
import
bftsmart.tom.server.RequestVerifier
;
import
bftsmart.tom.util.TOMUtil
;
import
java.nio.ByteBuffer
;
import
java.util.concurrent.LinkedBlockingQueue
;
import
java.util.logging.Level
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
@@ -52,6 +54,9 @@ public class ClientsManager {
private
ServerCommunicationSystem
cs
;
private
ReentrantLock
clientsLock
=
new
ReentrantLock
();
private
LinkedBlockingQueue
<
TOMMessage
>
ackQueue
;
private
Thread
ackReplier
;
public
ClientsManager
(
ServerViewController
controller
,
RequestsTimer
timer
,
RequestVerifier
verifier
,
ServerCommunicationSystem
cs
,
ExecutionManager
manager
,
DeliveryThread
dt
)
{
...
...
@@ -62,6 +67,25 @@ public class ClientsManager {
this
.
cs
=
cs
;
this
.
manager
=
manager
;
this
.
dt
=
dt
;
ackQueue
=
new
LinkedBlockingQueue
<>();
ackReplier
=
new
Thread
()
{
public
void
run
()
{
while
(
true
)
{
try
{
TOMMessage
request
=
ackQueue
.
take
();
cs
.
send
(
new
int
[]{
request
.
getSender
()},
request
.
reply
);
}
catch
(
InterruptedException
ex
)
{
java
.
util
.
logging
.
Logger
.
getLogger
(
ClientsManager
.
class
.
getName
()).
log
(
Level
.
SEVERE
,
null
,
ex
);
}
}
}
};
ackReplier
.
start
();
}
/**
...
...
@@ -447,24 +471,12 @@ public class ClientsManager {
TOMMessage
ack
=
new
TOMMessage
(
controller
.
getStaticConf
().
getProcessId
(),
request
.
getSession
(),
request
.
getSequence
(),
request
.
getOperationId
(),
buff
.
array
(),
request
.
getViewID
(),
TOMMessageType
.
ACK
);
//Launch another thread to not interfere with the netty worker
Thread
t
=
new
Thread
()
{
public
void
run
()
{
MessageContext
msgCtx
=
new
MessageContext
(
request
.
getSender
(),
request
.
getViewID
(),
request
.
getReqType
(),
request
.
getSession
(),
request
.
getSequence
(),
request
.
getOperationId
(),
request
.
getReplyServer
(),
request
.
serializedMessageSignature
,
System
.
currentTimeMillis
(),
0
,
0
,
-
1
,
-
1
,
-
1
,
null
,
null
,
false
);
request
.
reply
=
ack
;
request
.
msgCtx
=
msgCtx
;
//cs.send(new int[]{request.getSender()}, ack);
dt
.
getReplyManager
().
send
(
request
);
}
};
t
.
start
();
request
.
reply
=
ack
;
try
{
ackQueue
.
put
(
request
);
}
catch
(
InterruptedException
ex
)
{
java
.
util
.
logging
.
Logger
.
getLogger
(
ClientsManager
.
class
.
getName
()).
log
(
Level
.
SEVERE
,
null
,
ex
);
}
request
.
ackSent
=
true
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录