Skip to content

Commit f6e8aac

Browse files
committed
add: ForestSSE.asyncListen(SSELinesMode linesMode, ExecutorService pool)
add: asyncListen(SSELinesMode linesMode)
1 parent ef6b210 commit f6e8aac

File tree

2 files changed

+65
-10
lines changed

2 files changed

+65
-10
lines changed

forest-core/src/main/java/com/dtflys/forest/http/ForestSSE.java

Lines changed: 40 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -822,8 +822,13 @@ protected void decodeLinesWithSingleLineMode(final ForestResponse<InputStream> r
822822
}
823823
}
824824

825-
826-
825+
/**
826+
* 开始对 SSE 数据流进行监听
827+
*
828+
* @return SSE 控制器自身对象
829+
* @param <R> 自身类型
830+
* @since 1.6.0
831+
*/
827832
@Override
828833
public <R extends ForestSSE> R listen() {
829834
return listen(SSELinesMode.AUTO);
@@ -834,7 +839,7 @@ public <R extends ForestSSE> R listen() {
834839
*
835840
* @return SSE 控制器自身对象
836841
* @param <R> 自身类型
837-
* @since 1.6.0
842+
* @since 1.6.4
838843
*/
839844
public <R extends ForestSSE> R listen(SSELinesMode mode) {
840845
final boolean isAsync = this.request.isAsync();
@@ -886,21 +891,48 @@ public <R extends ForestSSE> R listen(SSELinesMode mode) {
886891
*/
887892
@Override
888893
public <R extends ForestSSE> R asyncListen() {
889-
completableFuture = CompletableFuture.supplyAsync(this::listen);
894+
return asyncListen(SSELinesMode.AUTO);
895+
}
896+
897+
/**
898+
* 开始对 SSE 事件流进行异步监听
899+
*
900+
* @param linesMode 行模式
901+
* @return ForestSSEListener 或其子类对象
902+
* @param <R> 自身类型
903+
* @since 1.6.4
904+
*/
905+
@Override
906+
public <R extends ForestSSE> R asyncListen(SSELinesMode linesMode) {
907+
completableFuture = CompletableFuture.supplyAsync(() -> listen(linesMode));
890908
return (R) this;
891909
}
892910

893911
/**
894-
* 开始对 SSE 数据流在线程池中进行异步监听
895-
*
912+
* 开始对 SSE 事件流在线程池中进行异步监听
913+
*
896914
* @param pool 线程池
897-
* @return SSE 控制器自身对象
915+
* @return ForestSSEListener 或其子类对象
898916
* @param <R> 自身类型
899917
* @since 1.6.0
900918
*/
901919
@Override
902920
public <R extends ForestSSE> R asyncListen(ExecutorService pool) {
903-
completableFuture = CompletableFuture.supplyAsync(this::listen, pool);
921+
return asyncListen(SSELinesMode.AUTO, pool);
922+
}
923+
924+
/**
925+
* 开始对 SSE 数据流在线程池中进行异步监听
926+
*
927+
* @param linesMode 行模式
928+
* @param pool 线程池
929+
* @return SSE 控制器自身对象
930+
* @param <R> 自身类型
931+
* @since 1.6.4
932+
*/
933+
@Override
934+
public <R extends ForestSSE> R asyncListen(SSELinesMode linesMode, ExecutorService pool) {
935+
completableFuture = CompletableFuture.supplyAsync(() -> listen(linesMode), pool);
904936
return (R) this;
905937
}
906938

forest-core/src/main/java/com/dtflys/forest/sse/ForestSSEListener.java

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,23 +33,46 @@ public interface ForestSSEListener<T extends ForestSSEListener<T>> extends SSESt
3333

3434
/**
3535
* 开始对 SSE 事件流进行异步监听
36-
*
36+
*
3737
* @return ForestSSEListener 或其子类对象
3838
* @param <R> 自身类型
3939
* @since 1.6.0
4040
*/
4141
<R extends T> R asyncListen();
4242

43+
/**
44+
* 开始对 SSE 事件流进行异步监听
45+
*
46+
* @param linesMode 行模式
47+
* @return ForestSSEListener 或其子类对象
48+
* @param <R> 自身类型
49+
* @since 1.6.4
50+
*/
51+
<R extends T> R asyncListen(SSELinesMode linesMode);
52+
53+
4354
/**
4455
* 开始对 SSE 事件流在线程池中进行异步监听
45-
*
56+
*
4657
* @param pool 线程池
4758
* @return ForestSSEListener 或其子类对象
4859
* @param <R> 自身类型
4960
* @since 1.6.0
5061
*/
5162
<R extends T> R asyncListen(ExecutorService pool);
5263

64+
65+
/**
66+
* 开始对 SSE 事件流在线程池中进行异步监听
67+
*
68+
* @param linesMode 行模式
69+
* @param pool 线程池
70+
* @return ForestSSEListener 或其子类对象
71+
* @param <R> 自身类型
72+
* @since 1.6.4
73+
*/
74+
<R extends T> R asyncListen(SSELinesMode linesMode, ExecutorService pool);
75+
5376
/**
5477
* 阻塞当前线程,直到异步监听结束为止
5578
*

0 commit comments

Comments
 (0)