@@ -26,6 +26,7 @@ public class ObserverUnit<PrimaryKey> : IObserverUnit<PrimaryKey>
2626 readonly List < Func < byte [ ] , Task > > eventHandlers = new List < Func < byte [ ] , Task > > ( ) ;
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 > > > ( ) ;
29+ readonly List < Func < PrimaryKey , Task > > observerResetHandlers = new List < Func < PrimaryKey , Task > > ( ) ;
2930 protected ILogger Logger { get ; private set ; }
3031 public Type GrainType { get ; }
3132
@@ -46,6 +47,11 @@ public Task<long[]> GetAndSaveVersion(PrimaryKey primaryKey, long srcVersion)
4647 {
4748 return Task . WhenAll ( observerVersionHandlers . Select ( func => func ( primaryKey , srcVersion ) ) ) ;
4849 }
50+
51+ public Task Reset ( PrimaryKey primaryKey )
52+ {
53+ return Task . WhenAll ( observerResetHandlers . Select ( func => func ( primaryKey ) ) ) ;
54+ }
4955 public List < string > GetGroups ( ) => eventHandlerGroups . Keys . ToList ( ) ;
5056 public List < Func < byte [ ] , Task > > GetAllEventHandlers ( )
5157 {
@@ -143,6 +149,7 @@ public void Observer(string group, Type observerType)
143149 eventHandlers . Add ( EventHandler ) ;
144150 batchEventHandlers . Add ( BatchEventHandler ) ;
145151 observerVersionHandlers . Add ( ( actorId , version ) => GetObserver ( observerType , actorId ) . GetAndSaveVersion ( version ) ) ;
152+ observerResetHandlers . Add ( ( actorId ) => GetObserver ( observerType , actorId ) . Reset ( ) ) ;
146153 //内部函数
147154 Task EventHandler ( byte [ ] bytes )
148155 {
0 commit comments