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

com.salesforce.reactivegrpc.jmh.BenchmarkReactorServerServiceImpl Maven / Gradle / Ivy

/*
 *  Copyright (c) 2019, Salesforce.com, Inc.
 *  All rights reserved.
 *  Licensed under the BSD 3-Clause license.
 *  For full license text, see LICENSE.txt file in the repo root  or https://opensource.org/licenses/BSD-3-Clause
 */
package com.salesforce.reactivegrpc.jmh;

import java.util.Arrays;

import com.salesforce.reactivegrpc.jmh.proto.Messages;
import com.salesforce.reactivegrpc.jmh.proto.ReactorBenchmarkServiceGrpc;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

/**
 * Reactor benchmarking service.
 */
public class BenchmarkReactorServerServiceImpl extends
                                        ReactorBenchmarkServiceGrpc.BenchmarkServiceImplBase {

    private final Mono responseMono;
    private final Flux responseFlux;

    public BenchmarkReactorServerServiceImpl(int times) {
        Messages.SimpleResponse[] array = new Messages.SimpleResponse[times];
        Arrays.fill(array, Messages.SimpleResponse.getDefaultInstance());

        this.responseFlux = Flux.fromArray(array);
        this.responseMono = Mono.just(Messages.SimpleResponse.getDefaultInstance());
    }

    @Override
    public Mono unaryCall(Mono request) {
        return request.then(responseMono);
    }

    @Override
    public Flux streamingFromServer(Mono request) {
        return request.thenMany(responseFlux);
    }

    @Override
    public Mono streamingFromClient(Flux request) {
        return request.then(responseMono);
    }

    @Override
    public Flux streamingBothWays(Flux request) {
        request.subscribe();
        return responseFlux;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy