Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
a0c66499
Commit
a0c66499
authored
Nov 11, 2016
by
Zsolt Felfoldi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
les/flowcontrol: fixed locking scheme
parent
ca73dea3
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
7 additions
and
4 deletions
+7
-4
control.go
les/flowcontrol/control.go
+7
-4
No files found.
les/flowcontrol/control.go
View file @
a0c66499
...
@@ -99,7 +99,7 @@ type ServerNode struct {
...
@@ -99,7 +99,7 @@ type ServerNode struct {
params
*
ServerParams
params
*
ServerParams
sumCost
uint64
// sum of req costs sent to this server
sumCost
uint64
// sum of req costs sent to this server
pending
map
[
uint64
]
uint64
// value = sumCost after sending the given req
pending
map
[
uint64
]
uint64
// value = sumCost after sending the given req
lock
sync
.
Mutex
lock
sync
.
RW
Mutex
}
}
func
NewServerNode
(
params
*
ServerParams
)
*
ServerNode
{
func
NewServerNode
(
params
*
ServerParams
)
*
ServerNode
{
...
@@ -135,8 +135,8 @@ func (peer *ServerNode) canSend(maxCost uint64) uint64 {
...
@@ -135,8 +135,8 @@ func (peer *ServerNode) canSend(maxCost uint64) uint64 {
}
}
func
(
peer
*
ServerNode
)
CanSend
(
maxCost
uint64
)
uint64
{
func
(
peer
*
ServerNode
)
CanSend
(
maxCost
uint64
)
uint64
{
peer
.
lock
.
Lock
()
peer
.
lock
.
R
Lock
()
defer
peer
.
lock
.
Unlock
()
defer
peer
.
lock
.
R
Unlock
()
return
peer
.
canSend
(
maxCost
)
return
peer
.
canSend
(
maxCost
)
}
}
...
@@ -148,7 +148,10 @@ func (peer *ServerNode) SendRequest(reqID, maxCost uint64) {
...
@@ -148,7 +148,10 @@ func (peer *ServerNode) SendRequest(reqID, maxCost uint64) {
peer
.
recalcBLE
(
getTime
())
peer
.
recalcBLE
(
getTime
())
for
peer
.
bufEstimate
<
maxCost
{
for
peer
.
bufEstimate
<
maxCost
{
time
.
Sleep
(
time
.
Duration
(
peer
.
canSend
(
maxCost
)))
wait
:=
time
.
Duration
(
peer
.
canSend
(
maxCost
))
peer
.
lock
.
Unlock
()
time
.
Sleep
(
wait
)
peer
.
lock
.
Lock
()
peer
.
recalcBLE
(
getTime
())
peer
.
recalcBLE
(
getTime
())
}
}
peer
.
bufEstimate
-=
maxCost
peer
.
bufEstimate
-=
maxCost
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment