Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
R
railgun-routing-client
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Railgun
railgun-routing-client
Commits
94e98c1e
Commit
94e98c1e
authored
Dec 21, 2025
by
nanamicat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
timeout
parent
53b6474b
Pipeline
#42074
passed with stages
in 2 minutes and 39 seconds
Changes
2
Pipelines
1
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
7 additions
and
22 deletions
+7
-22
src/router.rs
src/router.rs
+6
-21
src/settings.rs
src/settings.rs
+1
-1
No files found.
src/router.rs
View file @
94e98c1e
use
crate
::
data
::
Router
as
RouterData
;
use
crate
::
data
::
Router
as
RouterData
;
use
crate
::
protocol
::{
Hello
,
PeerQuality
};
use
crate
::
protocol
::{
Hello
,
PeerQuality
};
use
crate
::
settings
::{
Settings
,
HISTORY
,
INTERVAL
,
TIMEOUT
};
use
crate
::
settings
::{
HISTORY
,
INTERVAL
,
Settings
,
TIMEOUT
};
use
average
::
Mean
;
use
average
::
Mean
;
use
std
::
collections
::
BTreeMap
;
use
std
::
collections
::
BTreeMap
;
use
std
::
net
::{
IpAddr
,
SocketAddr
};
use
std
::
net
::{
IpAddr
,
SocketAddr
};
...
@@ -26,10 +26,7 @@ impl Router {
...
@@ -26,10 +26,7 @@ impl Router {
}
}
pub
fn
new
(
data
:
&
RouterData
,
config
:
&
Settings
)
->
Router
{
pub
fn
new
(
data
:
&
RouterData
,
config
:
&
Settings
)
->
Router
{
Router
{
Router
{
link_address
:
SocketAddr
::
new
(
link_address
:
SocketAddr
::
new
(
IpAddr
::
from
([
10
,
200
,
data
.id
,
config
.id
]),
config
.bind
.port
()),
IpAddr
::
from
([
10
,
200
,
data
.id
,
config
.id
]),
config
.bind
.port
(),
),
quality
:
PeerQuality
{
quality
:
PeerQuality
{
reliability
:
0
,
reliability
:
0
,
jitter
:
0
,
jitter
:
0
,
...
@@ -70,10 +67,7 @@ impl Router {
...
@@ -70,10 +67,7 @@ impl Router {
}
}
self
.remote_time
=
data
.time
;
self
.remote_time
=
data
.time
;
self
.local_time
=
SystemTime
::
now
()
self
.local_time
=
SystemTime
::
now
()
.duration_since
(
SystemTime
::
UNIX_EPOCH
)
.unwrap
()
.as_millis
()
as
u16
;
.duration_since
(
SystemTime
::
UNIX_EPOCH
)
.unwrap
()
.as_millis
()
as
u16
;
let
delay
=
self
.local_time
.wrapping_sub
(
self
.remote_time
)
as
i16
;
let
delay
=
self
.local_time
.wrapping_sub
(
self
.remote_time
)
as
i16
;
...
@@ -87,22 +81,13 @@ impl Router {
...
@@ -87,22 +81,13 @@ impl Router {
assert
!
(
!
received
.is_empty
());
// 因为走到这里一定刚放过一个进去
assert
!
(
!
received
.is_empty
());
// 因为走到这里一定刚放过一个进去
self
.quality.reliability
=
(
received
.len
()
*
255
/
HISTORY
as
usize
)
as
u8
;
self
.quality.reliability
=
(
received
.len
()
*
255
/
HISTORY
as
usize
)
as
u8
;
self
.quality.delay
=
received
self
.quality.delay
=
received
.iter
()
.map
(|
&
x
|
f64
::
from
(
x
))
.collect
::
<
Mean
>
()
.mean
()
as
i16
;
.iter
()
self
.quality.jitter
=
(
1
..
received
.len
())
.map
(|
i
|
f64
::
from
(
received
[
i
]
.abs_diff
(
received
[
i
-
1
])))
.collect
::
<
Mean
>
()
.mean
()
as
u8
;
.map
(|
&
x
|
f64
::
from
(
x
))
.collect
::
<
Mean
>
()
.mean
()
as
i16
;
self
.quality.jitter
=
(
1
..
received
.len
())
.map
(|
i
|
f64
::
from
(
received
[
i
]
.abs_diff
(
received
[
i
-
1
])))
.collect
::
<
Mean
>
()
.mean
()
as
u8
;
}
}
pub
(
crate
)
fn
update
(
&
mut
self
,
local_time
:
u16
)
->
PeerQuality
{
pub
(
crate
)
fn
update
(
&
mut
self
,
local_time
:
u16
)
->
PeerQuality
{
if
self
.quality.reliability
>
0
{
if
self
.quality.reliability
>
0
{
let
diff
=
(
local_time
.wrapping_sub
(
self
.local_time
)
as
i16
as
f64
let
diff
=
(
local_time
.wrapping_sub
(
self
.local_time
)
as
i16
as
f64
/
INTERVAL
.as_millis
()
as
f64
)
.round
()
as
i16
;
/
INTERVAL
.as_millis
()
as
f64
)
.round
()
as
i16
;
// 有几个包没到
// 有几个包没到
if
diff
>
TIMEOUT
.as_millis
()
as
i16
{
if
diff
>
TIMEOUT
.as_millis
()
as
i16
{
...
...
src/settings.rs
View file @
94e98c1e
...
@@ -15,7 +15,7 @@ pub struct Settings {
...
@@ -15,7 +15,7 @@ pub struct Settings {
}
}
pub
const
INTERVAL
:
Duration
=
Duration
::
from_secs
(
1
);
pub
const
INTERVAL
:
Duration
=
Duration
::
from_secs
(
1
);
pub
const
TIMEOUT
:
Duration
=
Duration
::
from_secs
(
1
0
);
pub
const
TIMEOUT
:
Duration
=
Duration
::
from_secs
(
6
0
);
pub
const
HISTORY
:
u8
=
100
;
pub
const
HISTORY
:
u8
=
100
;
// pub static ref CONFIG: Settings = Config::builder()
// pub static ref CONFIG: Settings = Config::builder()
...
...
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