package netflix.karyon.examples.tcp;
import com.google.inject.AbstractModule;
import com.netflix.governator.annotations.Modules;
import io.netty.buffer.ByteBuf;
import netflix.adminresources.resources.KaryonWebAdminModule;
import netflix.karyon.KaryonBootstrap;
import netflix.karyon.ShutdownModule;
import netflix.karyon.archaius.ArchaiusBootstrap;
import netflix.karyon.examples.tcp.TcpPipelineApp.ApplicationModule;
import netflix.karyon.examples.tcp.TcpPipelineApp.TcpBackendModule;
import netflix.karyon.examples.tcp.TcpPipelineApp.TcpFrontendModule;
import netflix.karyon.transport.tcp.KaryonTcpModule;
/**
* @author Tomasz Bak
*/
@ArchaiusBootstrap
@KaryonBootstrap(name = "sample-rxnetty-tcp-noss")
@Modules(include = {
ShutdownModule.class,
KaryonWebAdminModule.class,
// KaryonEurekaModule.class, // Uncomment this to enable Eureka client.
ApplicationModule.class,
TcpFrontendModule.class, TcpBackendModule.class
})
public interface TcpPipelineApp {
class ApplicationModule extends AbstractModule {
@Override
protected void configure() {
bind(TcpPipelineHandlers.QueueProvider.class).asEagerSingleton();
}
}
class TcpFrontendModule extends KaryonTcpModule<ByteBuf, ByteBuf> {
public TcpFrontendModule() {
super("tcpFrontServer", ByteBuf.class, ByteBuf.class);
}
@Override
protected void configureServer() {
bindConnectionHandler().to(TcpPipelineHandlers.FrontendConnectionHandler.class);
server().port(7770);
}
}
class TcpBackendModule extends KaryonTcpModule<ByteBuf, ByteBuf> {
public TcpBackendModule() {
super("tcpBackendServer", ByteBuf.class, ByteBuf.class);
}
@Override
protected void configureServer() {
bindConnectionHandler().to(TcpPipelineHandlers.BackendConnectionHandler.class);
server().port(7771);
}
}
}