1
0
mirror of https://gitee.com/willfree/mlsr.git synced 2026-06-09 17:09:35 +08:00

实现路由表中对于尚未计划计算事件的处理ScheduleRoutingTableCalculation

This commit is contained in:
free will
2022-05-19 11:52:24 +08:00
parent 3d9202994f
commit 055e992766
+17 -3
View File
@@ -26,11 +26,13 @@ type RoutingTable struct {
lsdb *lsdb.Lsdb
// 配置参数
mlsrConfig *common.MlsrConfig
// 任务调度器
scheduler *lsdb.MlsrScheduler
// 路由条目列表
rTable []*RoutingTableEntry
// 路由计算间隔时间
m_routingCalcInterval *time.Duration
m_routingCalcInterval time.Duration
// 路由表是否正在计算
m_isRoutingTableCalculating bool
// 是否已经安排了路由计算
@@ -42,6 +44,12 @@ type RoutingTable struct {
m_hyperbolicState uint32
}
func (t *RoutingTable) Init() {
// 初始化任务调度器
t.scheduler = new(lsdb.MlsrScheduler)
t.scheduler.Init()
}
//
// Calculate
// @Description: 计算网络中每个路由器的下一个跃点列表。
@@ -85,10 +93,16 @@ func (t *RoutingTable) FindRoutingTableEntry(destRouter *component.Identifier) *
// @Description: 仅当尚未计划计算事件时,才在事件计划程序中计划计算事件。
// @receiver t
//
func (t *RoutingTable) ScheduleRoutingTableCalculation() {
func (t *RoutingTable) ScheduleRoutingTableCalculation() error {
if !t.m_isRouteCalculationScheduled {
common2.LogFatal("Scheduling routing table calculation in ", t.m_routingCalcInterval)
err := t.scheduler.ScheduleTaskAfterDuration(t.m_routingCalcInterval, t.Calculate)
if err != nil {
return err
}
t.m_isRouteCalculationScheduled = true
}
return nil
}
//