增加Lsdb中对于lsdb被修改的事件

This commit is contained in:
free will committed 2022-06-24 20:27:43 +08:00
1 parent fa7c41e4fb
commit ab3f87bcee
1 file changed
+30 -4
+30 -4
View File
@@ -18,6 +18,7 @@ import (
"mlsr/communication"
"mlsr/lsa"
"mlsr/lsdb/LsaContainer"
"mlsr/utils"
"time"
)
@@ -60,6 +61,9 @@ type Lsdb struct {
isBuildAdjLsaScheduled bool // 是否安排构建邻接LSA
adjBuildCount uint64 // 邻接LSA的构建的统计数目
// 信号:用以通知“Lsdb被修改”这个事件的发生
onLsdbModified *utils.Signal
}
func (l *Lsdb) Init(mc *common.MlsrConfig, ms *MlsrScheduler,
@@ -102,6 +106,9 @@ func (l *Lsdb) Init(mc *common.MlsrConfig, ms *MlsrScheduler,
// 构建并安装自己的名称LSA
l.BuildAndInstallOwnNameLsa()
// 信号初始化
l.onLsdbModified = utils.NewSignal()
}
//
@@ -303,8 +310,8 @@ func (l *Lsdb) InstallLsa(lsa lsa.ILsa) {
common2.LogError("Add Lsa error", lsa.ToString())
return
}
// 2. 触发LSDB安装LSA的动作信号
// todo: onLsdbModified(lsa, LsdbUpdate::INSTALLED, {}, {});
// 2. 触发LSDB安装LSA的动作信号 onLsdbModified(lsa, LsdbUpdate::INSTALLED, {}, {});
l.onLsdbModified.Emit(lsa, INSTALLED)
// 3. 设置LSA超期时间事件
l.ScheduleLsaExpiration(lsa, timeToExpire)
} else if lsaInDb.GetSeqNo() < lsa.GetSeqNo() {
@@ -316,14 +323,32 @@ func (l *Lsdb) InstallLsa(lsa lsa.ILsa) {
common2.LogError("Add Lsa error", lsa.ToString())
return
}
// 2. 触发LSDB更新LSA的动作信号
// todo: onLsdbModified(lsa, LsdbUpdate::UPDATED, namesToAdd, namesToRemove);
// 2. 触发LSDB更新LSA的动作信号 onLsdbModified(lsa, LsdbUpdate::UPDATED, namesToAdd, namesToRemove);
// todo 实现该方法:对比两个lsa,将其不同的部分取出来
updated, namesToAdd, namesToRemove := l.compareTwoLsa(lsaInDb, lsa)
if updated {
l.onLsdbModified.Emit(lsa, UPDATED, namesToAdd, namesToRemove)
}
// 3. 设置LSA超期时间事件
l.ScheduleLsaExpiration(lsa, timeToExpire)
common2.LogDebug("Updated Lsa ", lsa.ToString())
}
}
//
// compareTwoLsa
// @Description: 对比两个lsa,将其不同的部分取出来
// @receiver l
// @param lsaA
// @param lsaB
// @return bool
// @return []*component.Identifier
// @return []component.Identifier
//
func (l *Lsdb) compareTwoLsa(lsaA lsa.ILsa, lsaB lsa.ILsa) (bool, []*component.Identifier, []component.Identifier) {
return true, nil, nil
}
//
// RemoveLsa
// @Description: 从LSDB中删除LSA
@@ -336,6 +361,7 @@ func (l *Lsdb) RemoveLsa(lsa lsa.ILsa) {
common2.LogError("")
return
}
l.onLsdbModified.Emit(lsa, REMOVED)
common2.LogDebug("Removed LSA: ", lsa.ToString())
}