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

nadron.beans.netty-handlers.xml Maven / Gradle / Ivy

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
	http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd 
	http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">

	<import resource="service-beans.xml" />


	<!-- Netty and decoders encoders and handlers -->
	<bean id="stringDecoder" class="io.netty.handler.codec.string.StringDecoder" />
	<bean id="stringMessageEncoder" class="io.netty.handler.codec.string.StringEncoder" />
	<bean id="base64Decoder" class="io.netty.handler.codec.base64.Base64Decoder" />
	<bean id="base64Encoder" class="io.netty.handler.codec.base64.Base64Encoder" />
	<bean id="nulEncoder" class="io.nadron.handlers.netty.NulEncoder" />
	<bean id="lengthFieldPrepender" class="io.netty.handler.codec.LengthFieldPrepender">
		<constructor-arg type="int" index="0" value="2" />
		<constructor-arg type="boolean" index="1" value="false" />
	</bean>
	<bean id="lengthFieldBasedFrameDecoder" class="io.netty.handler.codec.LengthFieldBasedFrameDecoder"
		scope="prototype">
		<constructor-arg type="int" index="0" value="4096" />
		<constructor-arg type="int" index="1" value="0" />
		<constructor-arg type="int" index="2" value="2" />
		<constructor-arg type="int" index="3" value="0" />
		<constructor-arg type="int" index="4" value="2" />
	</bean>
	<bean id="flashPolicyServerDecoder" class="io.nadron.handlers.netty.FlashPolicyServerDecoder" />
	<bean id="flashPolicyServerHandler" class="io.nadron.handlers.netty.FlashPolicyServerHandler" 
		scope="prototype">
		<constructor-arg value="${tcp.port}" />
	</bean>
	<bean id="AMF3ToJavaObjectDecoder" class="io.nadron.handlers.netty.AMF3ToJavaObjectDecoder" />
	<bean id="javaToAMF3Encoder" class="io.nadron.handlers.netty.JavaObjectToAMF3Encoder" />
	<bean id="eventDecoder" class="io.nadron.handlers.netty.EventDecoder" />
	<bean id="eventEncoder" class="io.nadron.handlers.netty.EventEncoder" />
	<bean id="messageBufferEventDecoder" class="io.nadron.handlers.netty.MessageBufferEventDecoder" />
	<bean id="messageBufferEventEncoder" class="io.nadron.handlers.netty.MessageBufferEventEncoder" />
	<bean id="udpEventEncoder" class="io.nadron.handlers.netty.UDPEventEncoder" />
	<bean id="udpUpstreamHandler" class="io.nadron.handlers.netty.UDPUpstreamHandler">
		<property name="udpSessionRegistry" ref="udpSessionRegistry" />
		<property name="messageBufferEventDecoder" ref="messageBufferEventDecoder" />
	</bean>

	<bean id="loginHandler" class="io.nadron.handlers.netty.LoginHandler">
		<property name="lookupService" ref="lookupService" />
		<property name="udpSessionRegistry" ref="udpSessionRegistry" />
		<property name="idGeneratorService" ref="simpleUniqueIdGenerator" />
		<property name="reconnectRegistry" ref="reconnectSessionRegistry" />
	</bean>

	<bean id="webSocketLoginHandler" class="io.nadron.handlers.netty.WebSocketLoginHandler">
		<property name="lookupService" ref="lookupService" />
		<property name="idGeneratorService" ref="simpleUniqueIdGenerator" />
		<property name="reconnectRegistry" ref="reconnectSessionRegistry" />
		<property name="jackson" ref="jackson" />
	</bean>
	<bean id="textWebsocketEncoder" class="io.nadron.handlers.netty.TextWebsocketEncoder">
		<property name="jackson" ref="jackson" />
	</bean>
	<bean id="textWebsocketDecoder" class="io.nadron.handlers.netty.TextWebsocketDecoder">
		<property name="jackson" ref="jackson" />
	</bean>
	<bean id="msgPackDecoder" class="io.nadron.handlers.netty.MsgPackDecoder">
		<property name="msgPack" ref="msgPack" />
	</bean>
	<bean id="msgPackEncoder" class="io.nadron.handlers.netty.MsgPackEncoder">
		<property name="msgPack" ref="msgPack" />
	</bean>
	
	<bean id="bossGroup" class="io.netty.channel.nio.NioEventLoopGroup" destroy-method="shutdownGracefully">
		<constructor-arg type="int" index="0" value="${bossThreadCount}" />
		<constructor-arg index="1" ref="bossThreadFactory" />
	</bean>

	<bean id="workerGroup" class="io.netty.channel.nio.NioEventLoopGroup" destroy-method="shutdownGracefully">
		<constructor-arg type="int" index="0"
			value="${workerThreadCount}" />
		<constructor-arg index="1" ref="workerThreadFactory" />
	</bean>

	<bean id="bossThreadFactory" class="io.nadron.concurrent.NamedThreadFactory">
		<constructor-arg type="String" value="Server-Boss" />
	</bean>

	<bean id="workerThreadFactory" class="io.nadron.concurrent.NamedThreadFactory">
		<constructor-arg type="String" index="0" value="Server-Worker" />
	</bean>

	<!-- Netty options for server bootstrap -->
	<util:map id="tcpChannelOptions" map-class="java.util.HashMap">
		<entry>
			<key><util:constant static-field="io.netty.channel.ChannelOption.SO_KEEPALIVE"/></key>
			<value type="java.lang.Boolean">${so.keepalive}</value>
		</entry>
		<entry>
			<key><util:constant static-field="io.netty.channel.ChannelOption.SO_BACKLOG"/></key>
			<value type="java.lang.Integer">${so.backlog}</value>
		</entry>
	</util:map>

	<util:map id="udpChannelOptions" map-class="java.util.HashMap">
		<entry>
			<key><util:constant static-field="io.netty.channel.ChannelOption.SO_SNDBUF"/></key>
			<value type="java.lang.Integer">${so.sndbuf}</value>
		</entry>
		<entry>
			<key><util:constant static-field="io.netty.channel.ChannelOption.SO_RCVBUF"/></key>
			<value type="java.lang.Integer">${so.rcvbuf}</value>
		</entry>
		<entry>
			<key><util:constant static-field="io.netty.channel.ChannelOption.SO_BROADCAST"/></key>
			<value type="java.lang.Boolean">${so.broadcast}</value>
		</entry>
	</util:map>
	
	<bean id="tcpConfig" class="io.nadron.server.netty.NettyConfig">
		<property name="channelOptions" ref="tcpChannelOptions"/>
		<property name="bossGroup" ref="bossGroup"/>
		<property name="workerGroup" ref="workerGroup"/>
		<property name="portNumber" value="${tcp.port}"/>
	</bean>
	
	<bean id="udpConfig" class="io.nadron.server.netty.NettyConfig">
		<property name="channelOptions" ref="udpChannelOptions"/>
		<property name="bossGroup" ref="bossGroup"/>
		<property name="portNumber" value="${udp.port}"/>
	</bean>
	
	<bean id="flashConfig" class="io.nadron.server.netty.NettyConfig">
		<property name="channelOptions" ref="tcpChannelOptions"/>
		<property name="bossGroup" ref="bossGroup"/>
		<property name="workerGroup" ref="workerGroup"/>
		<property name="portNumber" value="${flash.policyport}"/>
	</bean>
	
</beans>




© 2015 - 2024 Weber Informatics LLC | Privacy Policy