Commit 5a757000 authored by liujiahua123123's avatar liujiahua123123

deprecated onEvent

parent 5a4b4fb3
...@@ -25,49 +25,61 @@ public class MiraiEventManager { ...@@ -25,49 +25,61 @@ public class MiraiEventManager {
Lock hooksLock = new ReentrantLock(); Lock hooksLock = new ReentrantLock();
private Map<Class<? extends MiraiEvent>, List<MiraiEventHook<? extends MiraiEvent>>> hooks = new HashMap<>(); private Map<Class<? extends MiraiEvent>, List<MiraiEventHook<? extends MiraiEvent>>> hooks = new HashMap<>();
public <D extends MiraiEvent> void registerUntil(MiraiEventHook<D> hook, Predicate<D> toRemove){ public <D extends MiraiEvent> void hookUntil(MiraiEventHook<D> hook, Predicate<D> toRemove){
hooksLock.lock(); hooksLock.lock();
hooks.putIfAbsent(hook.getEventClass(),new ArrayList<>()); hooks.putIfAbsent(hook.getEventClass(),new ArrayList<>());
hooks.get(hook.getEventClass()).add(hook.setValidUntil(toRemove)); hooks.get(hook.getEventClass()).add(hook.setValidUntil(toRemove));
hooksLock.unlock(); hooksLock.unlock();
} }
public <D extends MiraiEvent> void registerWhile(MiraiEventHook<D> hook, Predicate<D> toKeep){ public <D extends MiraiEvent> void hookWhile(MiraiEventHook<D> hook, Predicate<D> toKeep){
hooksLock.lock(); hooksLock.lock();
hooks.putIfAbsent(hook.getEventClass(),new ArrayList<>()); hooks.putIfAbsent(hook.getEventClass(),new ArrayList<>());
hooks.get(hook.getEventClass()).add(hook.setValidWhile(toKeep)); hooks.get(hook.getEventClass()).add(hook.setValidWhile(toKeep));
hooksLock.unlock(); hooksLock.unlock();
} }
public <D extends MiraiEvent> void registerOnce(MiraiEventHook<D> hook){ public <D extends MiraiEvent> void hookOnce(MiraiEventHook<D> hook){
this.registerUntil(hook,(a) -> true); this.hookUntil(hook,(a) -> true);
} }
public <D extends MiraiEvent> void register(MiraiEventHook<D> hook){ public <D extends MiraiEvent> void registerHook(MiraiEventHook<D> hook){
this.registerUntil(hook,(a) -> false); this.hookUntil(hook,(a) -> false);
} }
/**
* 不推荐onEvent
* 非线程安全
* 不能保证下一个 D event发生时handler就位
* @author NaturalHG Aug27
*/
@Deprecated
public <D extends MiraiEvent> MiraiEventHook<D> onEvent(Class<D> event){ public <D extends MiraiEvent> MiraiEventHook<D> onEvent(Class<D> event){
MiraiEventHook<D> hook = new MiraiEventHook<>(event); MiraiEventHook<D> hook = new MiraiEventHook<>(event);
this.register(hook); this.registerHook(hook);
return hook; return hook;
} }
@Deprecated
public <D extends MiraiEvent> MiraiEventHook<D> onEventOnce(Class<D> event){ public <D extends MiraiEvent> MiraiEventHook<D> onEventOnce(Class<D> event){
MiraiEventHook<D> hook = new MiraiEventHook<>(event); MiraiEventHook<D> hook = new MiraiEventHook<>(event);
this.registerOnce(hook); this.hookOnce(hook);
return hook; return hook;
} }
@Deprecated
public <D extends MiraiEvent> MiraiEventHook<D> onEventUntil(Class<D> event, Predicate<D> toRemove){ public <D extends MiraiEvent> MiraiEventHook<D> onEventUntil(Class<D> event, Predicate<D> toRemove){
MiraiEventHook<D> hook = new MiraiEventHook<>(event); MiraiEventHook<D> hook = new MiraiEventHook<>(event);
this.registerUntil(hook,toRemove); this.hookUntil(hook,toRemove);
return hook; return hook;
} }
@Deprecated
public <D extends MiraiEvent> MiraiEventHook<D> onEventWhile(Class<D> event, Predicate<D> toKeep){ public <D extends MiraiEvent> MiraiEventHook<D> onEventWhile(Class<D> event, Predicate<D> toKeep){
MiraiEventHook<D> hook = new MiraiEventHook<>(event); MiraiEventHook<D> hook = new MiraiEventHook<>(event);
this.registerWhile(hook,toKeep); this.hookWhile(hook,toKeep);
return hook; return hook;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment