package io.scalecube.services;
import io.scalecube.transport.Message;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
final class GreetingServiceImpl implements GreetingService {
@Override
public String toString() {
return "GreetingServiceImpl []";
}
@Override
public CompletableFuture<String> greeting(String name) {
return CompletableFuture.completedFuture(" hello to: " + name);
}
@Override
public CompletableFuture<GreetingResponse> greetingRequestTimeout(GreetingRequest request) {
CompletableFuture<GreetingResponse> response = new CompletableFuture<GreetingResponse>();
Executors.newScheduledThreadPool(1).schedule(() -> {
try {
response.complete(new GreetingResponse(" hello to: " + request.getName()));
} catch (Exception ex) {
}
}, request.getDuration().toMillis(), TimeUnit.MILLISECONDS);
return response;
}
@Override
public CompletableFuture<String> greetingNoParams() {
return CompletableFuture.completedFuture("hello unknown");
}
@Override
public CompletableFuture<GreetingResponse> greetingRequest(GreetingRequest request) {
return CompletableFuture.completedFuture(new GreetingResponse(" hello to: " + request.getName()));
}
@Override
public CompletableFuture<Message> greetingMessage(Message request) {
return CompletableFuture.completedFuture(Message.fromData(" hello to: " + request.data()));
}
@Override
public void greetingVoid(GreetingRequest request) {
System.out.println(" hello to: " + request.getName());
}
}