mirror of
https://gitee.com/willfree/mlsr.git
synced 2026-06-09 17:09:35 +08:00
实现路由表中对于尚未计划计算事件的处理ScheduleRoutingTableCalculation
This commit is contained in:
+17
-3
@@ -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
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user