diff --git a/lsdb/Lsdb.go b/lsdb/Lsdb.go index 4227210..ed74ef5 100644 --- a/lsdb/Lsdb.go +++ b/lsdb/Lsdb.go @@ -68,6 +68,9 @@ type Lsdb struct { func (l *Lsdb) Init(mc *common.MlsrConfig, ms *MlsrScheduler, _face *logicface.LogicFace) { + // 信号初始化 + l.OnLsdbModified = utils.NewSignal() + // 配置项 l.mlsrConfig = mc // 调度器 @@ -106,9 +109,6 @@ func (l *Lsdb) Init(mc *common.MlsrConfig, ms *MlsrScheduler, // 构建并安装自己的名称LSA l.BuildAndInstallOwnNameLsa() - - // 信号初始化 - l.OnLsdbModified = utils.NewSignal() } // @@ -311,7 +311,9 @@ func (l *Lsdb) InstallLsa(lsa lsa.ILsa) { return } // 2. 触发LSDB安装LSA的动作信号 OnLsdbModified(lsa, LsdbUpdate::INSTALLED, {}, {}); - l.OnLsdbModified.Emit(lsa, INSTALLED) + if !l.OnLsdbModified.IsEmpty() { + l.OnLsdbModified.Emit(lsa, INSTALLED) + } // 3. 设置LSA超期时间事件 l.ScheduleLsaExpiration(lsa, timeToExpire) } else if lsaInDb.GetSeqNo() < lsa.GetSeqNo() { @@ -326,7 +328,7 @@ func (l *Lsdb) InstallLsa(lsa lsa.ILsa) { // 2. 触发LSDB更新LSA的动作信号 OnLsdbModified(lsa, LsdbUpdate::UPDATED, namesToAdd, namesToRemove); // todo 实现该方法:对比两个lsa,将其不同的部分取出来 updated, namesToAdd, namesToRemove := l.compareTwoLsa(lsaInDb, lsa) - if updated { + if updated && !l.OnLsdbModified.IsEmpty() { l.OnLsdbModified.Emit(lsa, UPDATED, namesToAdd, namesToRemove) } // 3. 设置LSA超期时间事件