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

io.inverno.mod.grpc.server.Server Maven / Gradle / Ivy

There is a newer version: 1.12.0
Show newest version
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