@@ -27,6 +27,7 @@ public class ObserverUnit<PrimaryKey> : IObserverUnit<PrimaryKey>
2727 readonly List < Func < List < byte [ ] > , Task > > batchEventHandlers = new List < Func < List < byte [ ] > , Task > > ( ) ;
2828 readonly List < Func < PrimaryKey , long , Task < long > > > observerVersionHandlers = new List < Func < PrimaryKey , long , Task < long > > > ( ) ;
2929 readonly List < Func < PrimaryKey , Task > > observerResetHandlers = new List < Func < PrimaryKey , Task > > ( ) ;
30+ readonly List < Func < PrimaryKey , long , Task < bool > > > observerSyncHandlers = new List < Func < PrimaryKey , long , Task < bool > > > ( ) ;
3031 protected ILogger Logger { get ; private set ; }
3132 public Type GrainType { get ; }
3233
@@ -47,7 +48,10 @@ public Task<long[]> GetAndSaveVersion(PrimaryKey primaryKey, long srcVersion)
4748 {
4849 return Task . WhenAll ( observerVersionHandlers . Select ( func => func ( primaryKey , srcVersion ) ) ) ;
4950 }
50-
51+ public Task < bool [ ] > SyncAllObservers ( PrimaryKey primaryKey , long srcVersion )
52+ {
53+ return Task . WhenAll ( observerSyncHandlers . Select ( func => func ( primaryKey , srcVersion ) ) ) ;
54+ }
5155 public Task Reset ( PrimaryKey primaryKey )
5256 {
5357 return Task . WhenAll ( observerResetHandlers . Select ( func => func ( primaryKey ) ) ) ;
@@ -149,6 +153,7 @@ public void Observer(string group, Type observerType)
149153 eventHandlers . Add ( EventHandler ) ;
150154 batchEventHandlers . Add ( BatchEventHandler ) ;
151155 observerVersionHandlers . Add ( ( actorId , version ) => GetObserver ( observerType , actorId ) . GetAndSaveVersion ( version ) ) ;
156+ observerSyncHandlers . Add ( ( actorId , version ) => GetObserver ( observerType , actorId ) . SyncFromObservable ( version ) ) ;
152157 observerResetHandlers . Add ( ( actorId ) => GetObserver ( observerType , actorId ) . Reset ( ) ) ;
153158 //内部函数
154159 Task EventHandler ( byte [ ] bytes )
0 commit comments