接口 EventLoopAgent<T>

所有已知实现类:
EmptyAgent

public interface EventLoopAgent<T>
Agent是EventLoop的内部代理,是EventLoop的内部策略实现,通常不暴露给EventLoop外部

1.Agent将事件循环和用户循环绑定起来 2.这里的方法只应由EventLoop调用,其它地方不应该调用

作者:
wjybxx date 2023/4/10
  • 方法概要

    修饰符和类型
    方法
    说明
    void
    inject(EventLoop eventLoop)
    在构造EventLoop的过程中将调用该方法注入实例 注意:此时EventLoop可能尚未完全初始化!
    void
    onEvent(T event)
    收到一个用户自定义事件或任务 IAgentEvent.getType()大于0的事件
    void
    当事件循环退出时将调用该方法 退出前进行必要的清理,释放系统资源
    void
    当事件循环启动的时候将调用该方法 注意:该方法抛出任何异常,都将导致事件循环线程终止!
    void
    当事件循环等待较长时间或处理完一批事件之后都将调用该方法 注意:该方法的调用时机和频率是不确定的,因此用户应该自行控制内部逻辑频率。
    default void
    如果当前线程阻塞在中断也无法唤醒的地方,用户需要唤醒线程 该方法是多线程调用的,要小心并发问题
  • 方法详细资料

    • inject

      void inject(EventLoop eventLoop)
      在构造EventLoop的过程中将调用该方法注入实例 注意:此时EventLoop可能尚未完全初始化!
      参数:
      eventLoop - 绑定的事件循环
    • onStart

      void onStart() throws Exception
      当事件循环启动的时候将调用该方法 注意:该方法抛出任何异常,都将导致事件循环线程终止!
      抛出:
      Exception
    • onEvent

      void onEvent(T event) throws Exception
      收到一个用户自定义事件或任务 IAgentEvent.getType()大于0的事件
      抛出:
      Exception
    • update

      void update() throws Exception
      当事件循环等待较长时间或处理完一批事件之后都将调用该方法 注意:该方法的调用时机和频率是不确定的,因此用户应该自行控制内部逻辑频率。
      抛出:
      Exception
    • wakeup

      default void wakeup()
      如果当前线程阻塞在中断也无法唤醒的地方,用户需要唤醒线程 该方法是多线程调用的,要小心并发问题
    • onShutdown

      void onShutdown() throws Exception
      当事件循环退出时将调用该方法 退出前进行必要的清理,释放系统资源
      抛出:
      Exception