package com.doumee.jtt808.web.config; import io.github.yezhihao.netmc.core.HandlerMapping; import io.github.yezhihao.netmc.core.SpringHandlerMapping; import io.github.yezhihao.netmc.session.SessionListener; import io.github.yezhihao.netmc.session.SessionManager; import io.github.yezhihao.protostar.SchemaManager; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.yzh.protocol.codec.DataFrameMessageDecoder; import org.yzh.protocol.codec.JTMessageAdapter; import org.yzh.protocol.codec.JTMessageEncoder; import org.yzh.protocol.codec.MultiPacketDecoder; import com.doumee.jtt808.web.endpoint.JTHandlerInterceptor; import com.doumee.jtt808.web.endpoint.JTMultiPacketListener; import com.doumee.jtt808.web.endpoint.JTSessionListener; import com.doumee.jtt808.web.model.enums.SessionKey; @Configuration public class JTBeanConfig { @Bean public HandlerMapping handlerMapping() { return new SpringHandlerMapping(); } @Bean public JTHandlerInterceptor handlerInterceptor() { return new JTHandlerInterceptor(); } @Bean public SessionListener sessionListener() { return new JTSessionListener(); } @Bean public SessionManager sessionManager(SessionListener sessionListener) { return new SessionManager(SessionKey.class, sessionListener); } @Bean public SchemaManager schemaManager() { return new SchemaManager("org.yzh.protocol"); } @Bean public JTMessageAdapter messageAdapter(SchemaManager schemaManager) { JTMessageEncoder encoder = new JTMessageEncoder(schemaManager); MultiPacketDecoder decoder = new MultiPacketDecoder(schemaManager, new JTMultiPacketListener(10)); return new WebLogAdapter(encoder, decoder); } @Bean public JTMessageAdapter alarmFileMessageAdapter(SchemaManager schemaManager) { JTMessageEncoder encoder = new JTMessageEncoder(schemaManager); DataFrameMessageDecoder decoder = new DataFrameMessageDecoder(schemaManager, new byte[]{0x30, 0x31, 0x63, 0x64}); return new WebLogAdapter(encoder, decoder); } @Bean public MultiPacketDecoder multiPacketDecoder(SchemaManager schemaManager) { return new MultiPacketDecoder(schemaManager); } }