tdlib-session-container/src/main/java/it/tdlight/reactiveapi/ReactiveApiMultiClient.java

33 lines
845 B
Java
Raw Normal View History

2022-01-09 20:20:20 +01:00
package it.tdlight.reactiveapi;
import it.tdlight.jni.TdApi;
2022-09-13 22:15:18 +02:00
import it.tdlight.jni.TdApi.Function;
import it.tdlight.jni.TdApi.Object;
2022-01-09 20:20:20 +01:00
import it.tdlight.reactiveapi.Event.ClientBoundEvent;
import java.time.Instant;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
public interface ReactiveApiMultiClient {
2022-09-13 22:15:18 +02:00
Flux<ClientBoundEvent> clientBoundEvents();
2022-01-09 20:20:20 +01:00
2022-09-13 22:15:18 +02:00
<T extends TdApi.Object> Mono<T> request(long userId, TdApi.Function<T> request, Instant timeout);
2022-01-09 20:20:20 +01:00
2022-09-13 22:15:18 +02:00
Mono<Void> close();
default ReactiveApiThinClient view(long userId) {
return new ReactiveApiThinClient() {
@Override
public <T extends Object> Mono<T> request(Function<T> request, Instant timeout) {
return ReactiveApiMultiClient.this.request(userId, request, timeout);
}
@Override
public long getUserId() {
return userId;
}
};
}
2022-01-09 20:20:20 +01:00
}