Commit bb31f7d2 authored by 神楽坂玲奈's avatar 神楽坂玲奈

test

parent cfb8273c
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "railgun-routing-client",
"version": "0.0.1", "version": "0.0.1",
"devDependencies": { "devDependencies": {
"@types/node": "^16.6.1", "@types/node": "^16.6.1",
......
import config from '../config/config.json'; import config from '../config/config.json';
import routers from '../config/routers.json'; import routers from '../config/routers.json';
import child_process from 'child_process';
export class RouteWriter { export class RouteWriter {
static input: string[] = [];
static reset() { static reset() {
console.log(`route flush table ${config.table} proto ${config.proto}`); this.input.push(`route flush table ${config.table} proto ${config.proto}`);
for (const peer of routers.filter(r => r.id !== parseInt(process.env.RAILGUN_ID) && r.interface)) { for (const peer of routers.filter((r) => r.id !== parseInt(process.env.RAILGUN_ID) && r.interface)) {
this.set(peer.id, peer.id); this.set(peer.id, peer.id);
} }
} }
static set(toId: number, viaId: number) { static set(toId: number, viaId: number) {
console.log(toId, viaId); const to = routers.find((r) => r.id == toId);
const to = routers.find(r => r.id == toId); const via = routers.find((r) => r.id == viaId);
const via = routers.find(r => r.id == viaId);
for (const address of [to.address, ...to.subnets]) { for (const address of [to.address, ...to.subnets]) {
console.log(`route replace ${address} dev ${via.interface}`); this.input.push(`route replace ${address} dev ${via.interface} table ${config.table} proto ${config.proto}`);
} }
} }
static commit() {
// 可能改成异步的会更好点
child_process.execFileSync('ip', ['-batch', '-'], { input: this.input.join('\n') });
this.input = [];
}
} }
...@@ -19,6 +19,7 @@ export class Server { ...@@ -19,6 +19,7 @@ export class Server {
} }
RouteWriter.set(message.to, message.via); RouteWriter.set(message.to, message.via);
RouteWriter.commit();
this.ack = message.seq + 1; this.ack = message.seq + 1;
const response: UploadMessage = { const response: UploadMessage = {
...@@ -43,11 +44,9 @@ export class Server { ...@@ -43,11 +44,9 @@ export class Server {
continue; continue;
} }
const reliability = (peer.reliability * (config.timeout - step)) / config.timeout;
const { id, delay } = peer; const { id, delay } = peer;
const reliability = (peer.reliability * (config.timeout - step)) / config.timeout;
// jitter 还没算 // TODO: jitter 没算
p[id] = { delay: Math.round(delay), jitter: 0, reliability }; p[id] = { delay: Math.round(delay), jitter: 0, reliability };
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment