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
5c51e2b7
Commit
5c51e2b7
authored
Dec 14, 2025
by
nanamicat
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
connection
parent
0624c872
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
26 additions
and
5 deletions
+26
-5
src/connection.rs
src/connection.rs
+13
-0
src/main.rs
src/main.rs
+13
-5
No files found.
src/connection.rs
0 → 100644
View file @
5c51e2b7
use
serde_derive
::
Deserialize
;
#[derive(Deserialize)]
pub
(
crate
)
struct
Connection
{
pub
metric
:
u32
,
pub
protocol
:
Schema
,
}
#[derive(Deserialize)]
pub
(
crate
)
enum
Schema
{
IP
,
UDP
,
TCP
,
}
src/main.rs
View file @
5c51e2b7
use
crate
::
connection
::
Connection
;
use
crate
::
data
::
Router
as
RouterData
;
use
crate
::
data
::
Router
as
RouterData
;
use
crate
::
protocol
::{
Change
,
Hello
,
Report
};
use
crate
::
protocol
::{
Change
,
Hello
,
Report
};
use
crate
::
router
::
Router
;
use
crate
::
router
::
Router
;
...
@@ -11,6 +12,7 @@ use std::time::SystemTime;
...
@@ -11,6 +12,7 @@ use std::time::SystemTime;
use
tokio
::
net
::
UdpSocket
;
use
tokio
::
net
::
UdpSocket
;
use
tokio
::
time
;
use
tokio
::
time
;
mod
connection
;
mod
data
;
mod
data
;
mod
gateway_group
;
mod
gateway_group
;
mod
protocol
;
mod
protocol
;
...
@@ -31,6 +33,10 @@ async fn main() -> anyhow::Result<()> {
...
@@ -31,6 +33,10 @@ async fn main() -> anyhow::Result<()> {
.iter
()
.iter
()
.map
(|
r
|
(
r
.id
,
Router
::
new
(
r
,
&
config
)))
.map
(|
r
|
(
r
.id
,
Router
::
new
(
r
,
&
config
)))
.collect
();
.collect
();
let
connections
=
serde_json
::
from_slice
::
<
HashMap
<
u8
,
HashMap
<
u8
,
Connection
>>>
(
&
fs
::
read
(
"import/connections.json"
,
)
?
)
?
;
// let groups: Vec<GatewayGroup> = serde_json::from_slice(&fs::read("import/GatewayGroup.json")?)?;
// let groups: Vec<GatewayGroup> = serde_json::from_slice(&fs::read("import/GatewayGroup.json")?)?;
let
mut
server
=
Server
::
new
(
let
mut
server
=
Server
::
new
(
...
@@ -79,17 +85,19 @@ async fn main() -> anyhow::Result<()> {
...
@@ -79,17 +85,19 @@ async fn main() -> anyhow::Result<()> {
// to clients
// to clients
hello
.time
=
SystemTime
::
now
()
.duration_since
(
SystemTime
::
UNIX_EPOCH
)
?
.as_millis
()
as
u16
;
hello
.time
=
SystemTime
::
now
()
.duration_since
(
SystemTime
::
UNIX_EPOCH
)
?
.as_millis
()
as
u16
;
let
message
=
bincode
::
encode_to_vec
(
&
hello
,
bincode
::
config
::
standard
())
?
;
let
message
=
bincode
::
encode_to_vec
(
&
hello
,
bincode
::
config
::
standard
())
?
;
for
peer
in
routers
.values
()
{
for
id
in
connections
[
&
config
.id
]
.keys
()
{
let
_
=
socket
.send_to
(
message
.as_slice
(),
peer
.link_address
);
let
router
=
&
routers
[
id
];
let
_
=
socket
.send_to
(
message
.as_slice
(),
router
.link_address
);
}
}
// to server
// to server
let
report
=
Report
{
let
report
=
Report
{
id
:
config
.id
,
id
:
config
.id
,
ack
:
server
.ack
,
ack
:
server
.ack
,
peers
:
routers
peers
:
connections
.values_mut
()
.iter
()
.map
(|
peer
|
peer
.update
(
hello
.time
))
.filter
(|(
_
,
to
)|
to
.contains_key
(
&
config
.id
))
.map
(|(
from
,
_
)|
routers
.get_mut
(
from
)
.unwrap
()
.update
(
hello
.time
))
.collect
(),
.collect
(),
};
};
let
message
=
bincode
::
encode_to_vec
(
&
report
,
bincode
::
config
::
standard
())
?
;
let
message
=
bincode
::
encode_to_vec
(
&
report
,
bincode
::
config
::
standard
())
?
;
...
...
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