Protoc generiert für jeden im protobuf-file definierte Service eine Klasse mit Grpc-Endung, die eine ImplBase-Klasse bereit stellt. Diese kann erweitert werden und darin die Service-Logik implementiert werden.

Anstatt die Antwort per return zurückzugeben, erwartet die Funktion zusätzlich zu den Parametern einen StreamObserver<T>, der die Methoden onNext(T), onError(Throwable) und onCompleted() bereitstellt.

Beispiel

public class FooServiceImpl extends FooServiceGrpc.FooServiceImplBase {
	@Override
	public void registerUser(Credentials c, StreamObserver<User> observer) {
		// Service-Logik...
		
		User user = User.newBuilder().build();
		
		observer.onNext(response);
		observer.onComplete();
	}
}