
io.inverno.mod.grpc.server.Server Maven / Gradle / Ivy
package io.inverno.mod.grpc.server;
import com.google.protobuf.ExtensionRegistry;
import io.inverno.core.v1.Module;
import io.inverno.mod.base.net.NetService;
import io.inverno.mod.grpc.base.Base;
import io.inverno.mod.grpc.base.GrpcBaseConfiguration;
import io.inverno.mod.grpc.base.GrpcMessageCompressor;
import io.inverno.mod.grpc.server.internal.ExtensionRegistryWrapper;
import io.inverno.mod.grpc.server.internal.GenericGrpcServer;
import java.lang.NullPointerException;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.function.Supplier;
import javax.annotation.processing.Generated;
@Generated(value= {"io.inverno.core.compiler.InvernoCompiler", "1"}, date = "2024-05-24T17:31:58.714192748+02:00[Europe/Paris]")
public final class Server extends Module {
private Base base;
private Bean configuration;
private Bean extensionRegistry;
private Bean grpcServer;
private Server(
@Socket(name = "messageCompressors", wiredTo = {"grpcServer"}) Optional>> messageCompressors,
@Socket(name = "netService", wiredTo = {"extensionRegistry", "grpcServer", "configuration"}) Supplier netService,
@Socket(name = "configuration", wiredTo = {"grpcServer"}) Optional> configurationOverride,
@Socket(name = "extensionRegistry", wiredTo = {"grpcServer", "configuration"}) Optional> extensionRegistryOverride
) {
super("io.inverno.mod.grpc.server");
this.base = this.with(new Base.Linker(Map.ofEntries(
Map.entry("messageCompressors", Optional.of((Supplier>)() -> new BeanAggregator()
.add(messageCompressors.orElse(() -> null).get())
.toList())),
Map.entry("netService", (Supplier)() -> netService.get()),
Map.entry("configuration", Optional.of((Supplier)() -> Optional.ofNullable(this.configuration.get().base()).orElseThrow(() -> new NullPointerException("configuration.base"))))
)));
this.configuration = this.with(WrapperBeanBuilder
.singleton("configuration", () -> {
io.inverno.mod.grpc.server.GrpcServerConfigurationLoader.Bean configuration = new io.inverno.mod.grpc.server.GrpcServerConfigurationLoader.Bean();
return configuration;
})
.override(configurationOverride)
);
this.extensionRegistry = this.with(WrapperBeanBuilder
.singleton("extensionRegistry", () -> {
ExtensionRegistryWrapper extensionRegistry = new ExtensionRegistryWrapper();
return extensionRegistry;
})
.override(extensionRegistryOverride)
);
this.grpcServer = this.with(ModuleBeanBuilder
.singleton("grpcServer", () -> {
GenericGrpcServer grpcServer = new GenericGrpcServer(
this.base.messageCompressorService(),
this.extensionRegistry.get(),
netService.get()
);
return grpcServer;
})
);
}
public GrpcServerConfiguration configuration() {
return this.configuration.get();
}
private ExtensionRegistry extensionRegistry() {
return this.extensionRegistry.get();
}
public GenericGrpcServer grpcServer() {
return this.grpcServer.get();
}
public static final class Builder extends ModuleBuilder {
private Optional>> messageCompressors = Optional.empty();
private Supplier netService;
private Optional> configuration = Optional.empty();
private Optional> extensionRegistry = Optional.empty();
public Builder(NetService netService) {
super("netService", netService);
this.netService = () -> netService;
}
protected Server doBuild() {
return new Server(this.messageCompressors, this.netService, this.configuration, this.extensionRegistry);
}
public Builder setMessageCompressors(List messageCompressors) {
this.messageCompressors = Optional.ofNullable(messageCompressors != null ? () -> messageCompressors : null);
return this;
}
public Builder setConfiguration(GrpcServerConfiguration configuration) {
this.configuration = Optional.ofNullable(configuration != null ? () -> configuration : null);
return this;
}
public Builder setExtensionRegistry(ExtensionRegistry extensionRegistry) {
this.extensionRegistry = Optional.ofNullable(extensionRegistry != null ? () -> extensionRegistry : null);
return this;
}
}
public static final class Linker extends ModuleLinker {
public Linker(Map sockets) {
super(sockets);
}
@SuppressWarnings("unchecked")
protected Server link() {
return new Server(
(Optional>>)this.sockets.get("messageCompressors"),
(Supplier)this.sockets.get("netService"),
(Optional>)this.sockets.get("configuration"),
(Optional>)this.sockets.get("extensionRegistry")
);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy