All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jetlinks.rule.engine.api.rpc.RpcService Maven / Gradle / Ivy

package org.jetlinks.rule.engine.api.rpc;

import org.reactivestreams.Publisher;
import reactor.core.Disposable;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import java.util.function.BiFunction;
import java.util.function.Function;

/**
 * Rpc 服务
 *
 * @author zhouhao
 * @since 1.0.4
 */
public interface RpcService {

    /**
     * 监听请求,相当于发布服务.
     *
     * @param definition RPC定义
     * @param call       请求回掉
     * @param       请求类型
     * @param       响应类型
     * @return Disposable
     */
     Disposable listen(RpcDefinition definition,
                                 BiFunction> call);

    /**
     * 监听没有参数的请求.
     *
     * @param definition RPC定义
     * @param call       请求回掉
     * @param       响应类型
     * @return Disposable
     */
     Disposable listen(RpcDefinition definition,
                            Function> call);

    /**
     * 调用RPC服务
     *
     * @param definition RPC定义
     * @param payload    请求参数
     * @param       参数类型
     * @param       响应类型
     * @return 响应结果
     */
     Flux invoke(RpcDefinition definition, Publisher payload);

    /**
     * 调用没有参数的RPC服务
     *
     * @param definition RPC定义
     * @param       响应类型
     * @return 响应结果
     */
     Flux invoke(RpcDefinition definition);

    /**
     * 调用RPC服务
     *
     * @param definition RCP定义
     * @param payload    请求体
     * @param       请求类型
     * @param       响应类型
     * @return 响应结果
     */
    default  Flux invoke(RpcDefinition definition, REQ payload) {
        return invoke(definition, Mono.just(payload));
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy