Class OpenCodeSseClient

java.lang.Object
io.github.easy4j.opencode.api.OpenCodeSseClient
All Implemented Interfaces:
AutoCloseable

public class OpenCodeSseClient extends Object implements AutoCloseable
OpenCode Server SSE 客户端,负责事件订阅、过滤、取消和资源回收。
Since:
1.0.0
Author:
Loong Wan
  • Constructor Details

    • OpenCodeSseClient

      public OpenCodeSseClient(OpenCodeHttpClientConfig config)
      使用 SDK 自建 OkHttpClient 创建 SSE 客户端。
      Parameters:
      config - 客户端配置;不得为 null
    • OpenCodeSseClient

      public OpenCodeSseClient(OpenCodeHttpClientConfig config, com.fasterxml.jackson.databind.ObjectMapper objectMapper, okhttp3.OkHttpClient httpClient)
      使用共享 ObjectMapper 和 OkHttpClient 创建 SSE 客户端。
      Parameters:
      config - 客户端配置;不得为 null
      objectMapper - JSON 映射器;为 null 时使用 SDK 默认配置
      httpClient - 可复用的 OkHttp 客户端;为 null 时由 SDK 创建
  • Method Details

    • subscribeEvents

      public SseSubscription subscribeEvents(Consumer<SseEvent> consumer)
      订阅全局事件流。
      Parameters:
      consumer - 事件或文本增量消费者;不得为 null
      Returns:
      用于取消连接并释放资源的订阅句柄
    • subscribeEvents

      public SseSubscription subscribeEvents(Consumer<SseEvent> consumer, OpenCodeRequestContext context)
      使用请求上下文订阅全局事件流。
      Parameters:
      consumer - 事件或文本增量消费者;不得为 null
      context - 请求上下文;为 null 时不附加目录头
      Returns:
      用于取消连接并释放资源的订阅句柄
    • subscribeEventsQueue

      public SseQueueSubscription subscribeEventsQueue(OpenCodeRequestContext context)
      创建带有界队列的全局事件订阅。
      Parameters:
      context - 请求上下文;为 null 时不附加目录头
      Returns:
      包含有界事件队列和取消句柄的订阅对象
    • subscribeSessionEvents

      public SseSubscription subscribeSessionEvents(String sessionId, Consumer<SseEvent> consumer)
      订阅指定 session 的事件。
      Parameters:
      sessionId - OpenCode 会话 ID;不得为空
      consumer - 事件或文本增量消费者;不得为 null
      Returns:
      用于取消连接并释放资源的订阅句柄
    • subscribeSessionEvents

      public SseSubscription subscribeSessionEvents(String sessionId, Consumer<SseEvent> consumer, OpenCodeRequestContext context)
      使用请求上下文订阅指定 session 的事件。
      Parameters:
      sessionId - OpenCode 会话 ID;不得为空
      consumer - 事件或文本增量消费者;不得为 null
      context - 请求上下文;为 null 时不附加目录头
      Returns:
      用于取消连接并释放资源的订阅句柄
    • subscribeSessionEvents

      public SseSubscription subscribeSessionEvents(String sessionId, EventHandler handler)
      使用类型化处理器订阅指定 session 的事件。
      Parameters:
      sessionId - OpenCode 会话 ID;不得为空
      handler - 类型化事件处理器;不得为 null
      Returns:
      用于取消连接并释放资源的订阅句柄
    • subscribeSessionEvents

      public SseSubscription subscribeSessionEvents(String sessionId, EventHandler handler, OpenCodeRequestContext context)
      使用请求上下文和类型化处理器订阅指定 session 的事件。
      Parameters:
      sessionId - OpenCode 会话 ID;不得为空
      handler - 类型化事件处理器;不得为 null
      context - 请求上下文;为 null 时不附加目录头
      Returns:
      用于取消连接并释放资源的订阅句柄
    • subscribeEventTypes

      public SseSubscription subscribeEventTypes(Set<String> types, Consumer<SseEvent> consumer)
      订阅指定类型集合中的事件。
      Parameters:
      types - 允许通过的事件类型集合;为空时不过滤
      consumer - 事件或文本增量消费者;不得为 null
      Returns:
      用于取消连接并释放资源的订阅句柄
    • subscribeEventTypes

      public SseSubscription subscribeEventTypes(Set<String> types, Consumer<SseEvent> consumer, OpenCodeRequestContext context)
      使用请求上下文订阅指定类型集合中的事件。
      Parameters:
      types - 允许通过的事件类型集合;为空时不过滤
      consumer - 事件或文本增量消费者;不得为 null
      context - 请求上下文;为 null 时不附加目录头
      Returns:
      用于取消连接并释放资源的订阅句柄
    • activeSubscriptionCount

      public int activeSubscriptionCount()
      返回当前活动订阅数量。
      Returns:
      按接口语义计算的数量或状态数值
    • close

      public void close()
      取消全部订阅并释放 SSE 客户端自有资源。
      Specified by:
      close in interface AutoCloseable