
com.github.thorbenkuck.netcom2.auto.NativeServerFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of NetCom2-Auto Show documentation
Show all versions of NetCom2-Auto Show documentation
Annotation approach to reduce boilerplate code
The newest version!
package com.github.thorbenkuck.netcom2.auto;
import com.github.thorbenkuck.keller.datatypes.interfaces.Value;
import com.github.thorbenkuck.netcom2.network.server.ConnectorCore;
import com.github.thorbenkuck.netcom2.network.server.ServerStart;
final class NativeServerFactory implements ServerFactory {
private final GeneratedRepository repository;
private final Value objectRepositoryValue = Value.emptySynchronized();
NativeServerFactory(GeneratedRepository repository) {
this.repository = repository;
}
private void connect(ServerStart serverStart) {
ObjectRepository objectRepository = objectRepositoryValue.get();
repository.apply(serverStart, objectRepository);
}
@Override
public ServerFactory use(ObjectRepository objectRepository) {
objectRepositoryValue.set(objectRepository);
return this;
}
@Override
public ServerFactoryFinalizer use(ServerStart serverStart) {
connect(serverStart);
return new NativeServerFactoryFinalizer(serverStart);
}
@Override
public ServerFactoryFinalizer at(int port) {
ServerStart serverStart = ServerStart.at(port);
return use(serverStart);
}
@Override
public ServerFactoryFinalizer asNIO(int port) {
ServerStart serverStart = ServerStart.nio(port);
return use(serverStart);
}
@Override
public ServerFactoryFinalizer asTCP(int port) {
ServerStart serverStart = ServerStart.tcp(port);
return use(serverStart);
}
@Override
public ServerFactoryFinalizer asUDP(int port) {
ServerStart serverStart = ServerStart.udp(port);
return use(serverStart);
}
@Override
public ServerFactoryFinalizer as(int port, ConnectorCore connectorCore) {
ServerStart serverStart = ServerStart.raw(port);
serverStart.setConnectorCore(connectorCore);
return use(serverStart);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy