package org.yzh.web.endpoint; 
 | 
  
 | 
import io.github.yezhihao.netmc.session.Session; 
 | 
import org.yzh.protocol.codec.MultiPacket; 
 | 
import org.yzh.protocol.codec.MultiPacketListener; 
 | 
import org.yzh.protocol.commons.JT808; 
 | 
import org.yzh.protocol.t808.T8003; 
 | 
  
 | 
import java.util.List; 
 | 
  
 | 
public class JTMultiPacketListener extends MultiPacketListener { 
 | 
  
 | 
    public JTMultiPacketListener(int timeout) { 
 | 
        super(timeout); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public boolean receiveTimeout(MultiPacket multiPacket) { 
 | 
        int retryCount = multiPacket.getRetryCount(); 
 | 
        if (retryCount > 5) 
 | 
            return false; 
 | 
  
 | 
        T8003 request = new T8003(); 
 | 
        request.setMessageId(JT808.服务器补传分包请求); 
 | 
        request.copyBy(multiPacket.getFirstPacket()); 
 | 
        request.setResponseSerialNo(multiPacket.getSerialNo()); 
 | 
        List<Integer> notArrived = multiPacket.getNotArrived(); 
 | 
        short[] idList = new short[notArrived.size()]; 
 | 
        for (int i = 0; i < idList.length; i++) { 
 | 
            idList[i] = notArrived.get(i).shortValue(); 
 | 
        } 
 | 
        request.setId(idList); 
 | 
        Session session = multiPacket.getFirstPacket().getSession(); 
 | 
        if (session != null) { 
 | 
            session.notify(request).block(); 
 | 
            multiPacket.addRetryCount(1); 
 | 
            return true; 
 | 
        } 
 | 
        return false; 
 | 
    } 
 | 
} 
 |