private static ServiceMessage enrichRequest() { return ServiceMessage.builder() .qualifier(QUALIFIER) .header(CLIENT_SEND_TIME, System.currentTimeMillis()) .build(); } }
/** * {@link GatewayMessage} to {@link ServiceMessage} converter. * * @param message gateway message * @return service message */ public static ServiceMessage toServiceMessage(GatewayMessage message) { return ServiceMessage.builder().headers(message.headers).data(message.data).build(); }
private ServiceMessage generateServiceMessage(Object data) { return ServiceMessage.builder() .dataFormat(dataCodec.contentType()) .qualifier("io.scalecube.services.benchmarks/SomeBenchmarkService/benchmark") .header("sid", String.valueOf(Integer.MAX_VALUE)) .header("sig", String.valueOf(9)) .header("inactivity", String.valueOf(Integer.MAX_VALUE)) .data(data) .build(); }
private ServiceMessage toResponse(Object response) { return (response instanceof ServiceMessage) ? (ServiceMessage) response : ServiceMessage.builder().qualifier(methodInfo.qualifier()).data(response).build(); } }
/** * Instantiates new message with the same data and headers as at given message. * * @param message the message to be copied * @return a new message, with the same data and headers */ public static Builder from(ServiceMessage message) { return ServiceMessage.builder().data(message.data()).headers(message.headers()); }
/** * Instantiates new message with error qualifier for given error type and specified error code and * message. * * @param errorType the error type to be used in message qualifier. * @param errorCode the error code. * @param errorMessage the error message. * @return builder. */ public static ServiceMessage error(int errorType, int errorCode, String errorMessage) { return ServiceMessage.builder() .qualifier(Qualifier.asError(errorType)) .data(new ErrorData(errorCode, errorMessage)) .build(); }
/** * Decode buffers. * * @param dataBuffer the buffer of the data (payload) * @param headersBuffer the buffer of the headers * @return a new Service message with {@link ByteBuf} data and with parsed headers. * @throws MessageCodecException when decode fails */ public ServiceMessage decode(ByteBuf dataBuffer, ByteBuf headersBuffer) throws MessageCodecException { ServiceMessage.Builder builder = ServiceMessage.builder(); if (dataBuffer.isReadable()) { builder.data(dataBuffer); } if (headersBuffer.isReadable()) { try (ByteBufInputStream stream = new ByteBufInputStream(headersBuffer, true)) { builder.headers(headersCodec.decode(stream)); } catch (Throwable ex) { ReferenceCountUtil.safestRelease(dataBuffer); // release data buf as well throw new MessageCodecException("Failed to decode message headers", ex); } } return builder.build(); }
ServiceMessage request = ServiceMessage.builder().qualifier(QUALIFIER).build();
private Mono<Void> handleRequest( ByteBuf content, HttpServerRequest httpRequest, HttpServerResponse httpResponse) { String qualifier = httpRequest.uri(); Builder builder = ServiceMessage.builder().qualifier(qualifier).data(content); enrichRequest(httpRequest.requestHeaders(), builder); return serviceCall .requestOne(builder.build()) .doOnNext(message -> metrics.markServiceResponse()) .switchIfEmpty( Mono.defer(() -> Mono.just(ServiceMessage.builder().qualifier(qualifier).build()))) .flatMap( response -> { enrichResponse(httpResponse, response); return Mono.defer( () -> response.isError() // check error ? error(httpResponse, response) : response.hasData() // check data ? ok(httpResponse, response) : noContent(httpResponse)); }); }
private Mono<Void> handleRequest( ByteBuf content, HttpServerRequest httpRequest, HttpServerResponse httpResponse) { String qualifier = httpRequest.uri(); Builder builder = ServiceMessage.builder().qualifier(qualifier).data(content); enrichRequest(httpRequest.requestHeaders(), builder); return serviceCall .requestOne(builder.build()) .doOnNext(message -> metrics.markServiceResponse()) .switchIfEmpty( Mono.defer(() -> Mono.just(ServiceMessage.builder().qualifier(qualifier).build()))) .flatMap( response -> { enrichResponse(httpResponse, response); return Mono.defer( () -> ExceptionProcessor.isError(response) // check error ? error(httpResponse, response) : response.hasData() // check data ? ok(httpResponse, response) : noContent(httpResponse)); }); }
private ServiceMessage toServiceMessage(MethodInfo methodInfo, Object... params) { if (methodInfo.parameterCount() != 0 && params[0] instanceof ServiceMessage) { return ServiceMessage.from((ServiceMessage) params[0]) .qualifier(methodInfo.serviceName(), methodInfo.methodName()) .build(); } return ServiceMessage.builder() .qualifier(methodInfo.serviceName(), methodInfo.methodName()) .data(methodInfo.parameterCount() != 0 ? params[0] : null) .build(); }
private ServiceMessage toServiceMessage(MethodInfo methodInfo, Object... params) { if (methodInfo.parameterCount() != 0 && params[0] instanceof ServiceMessage) { return ServiceMessage.from((ServiceMessage) params[0]) .qualifier(methodInfo.serviceName(), methodInfo.methodName()) .build(); } return ServiceMessage.builder() .qualifier(methodInfo.serviceName(), methodInfo.methodName()) .data(methodInfo.parameterCount() != 0 ? params[0] : null) .build(); }
ServiceMessage.builder().qualifier(SERVICE_QUALIFIER).data("joe").build();
/** * Main method. * * @param args - params of main method. */ public static void main(String[] args) { BenchmarkSettings settings = BenchmarkSettings.from(args).build(); new BenchmarkServiceState(settings, new BenchmarkServiceImpl()) .runForAsync( state -> { BenchmarkService benchmarkService = state.service(BenchmarkService.class); BenchmarkTimer timer = state.timer("timer"); BenchmarkMeter meter = state.meter("meter"); ServiceMessage message = ServiceMessage.builder().qualifier(QUALIFIER).build(); return i -> { Context timeContext = timer.time(); return benchmarkService .requestVoid(message) .doOnTerminate(timeContext::stop) .doOnTerminate(meter::mark); }; }); } }