![JAR search and dependency download from the Maven repository](/logo.png)
netflix.karyon.transport.http.websockets.KaryonWebSocketsModule Maven / Gradle / Ivy
package netflix.karyon.transport.http.websockets;
import com.google.inject.Key;
import com.google.inject.binder.LinkedBindingBuilder;
import com.google.inject.multibindings.MapBinder;
import io.netty.handler.codec.http.websocketx.WebSocketFrame;
import io.reactivex.netty.channel.ConnectionHandler;
import io.reactivex.netty.server.RxServer;
import netflix.karyon.transport.AbstractServerModule;
import netflix.karyon.transport.http.websockets.KaryonWebSocketsModule.WebSocketsServerConfigBuilder;
import static netflix.karyon.utils.TypeUtils.keyFor;
/**
* @author Tomasz Bak
*/
public abstract class KaryonWebSocketsModule extends
AbstractServerModule {
protected final Key> connectionHandlerKey;
protected final Key> serverKey;
protected KaryonWebSocketsModule(String moduleName, Class iType, Class oType) {
super(moduleName, iType, oType);
connectionHandlerKey = keyFor(ConnectionHandler.class, iType, oType, nameAnnotation);
serverKey = keyFor(RxServer.class, iType, oType, nameAnnotation);
}
@Override
protected void configure() {
configureServer();
bind(serverConfigKey).toInstance(serverConfigBuilder.build());
MapBinder.newMapBinder(binder(), String.class, RxServer.class).addBinding(nameAnnotation.value()).toProvider(
new WebSocketsRxServerProvider>(nameAnnotation.value(), iType, oType)
).asEagerSingleton();
}
@Override
protected WebSocketsServerConfigBuilder newServerConfigBuilder() {
return new WebSocketsServerConfigBuilder();
}
public LinkedBindingBuilder> bindConnectionHandler() {
return bind(connectionHandlerKey);
}
public static class WebSocketsServerConfig extends AbstractServerModule.ServerConfig {
private final boolean messageAggregator;
public WebSocketsServerConfig(int port, boolean messageAggregator) {
super(port);
this.messageAggregator = messageAggregator;
}
public boolean isMessageAggregator() {
return messageAggregator;
}
}
public static class WebSocketsServerConfigBuilder extends AbstractServerModule.ServerConfigBuilder {
protected boolean messageAggregator;
public WebSocketsServerConfigBuilder withMessageAggregator(boolean messageAggregator) {
this.messageAggregator = messageAggregator;
return this;
}
@Override
public WebSocketsServerConfig build() {
return new WebSocketsServerConfig(port, messageAggregator);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy