package com.hdl.sdk.socket.codec; import java.util.ArrayList; import java.util.List; import java.util.Objects; /** * Created by Tong on 2021/9/23. */ public class MessagePipeLine implements IMessagePipeLine, IHandleMessage { public final List queue = new ArrayList<>(); @Override public void add(IHandleFlow flow) { queue.add(flow); } @Override public synchronized void clear() { queue.clear(); } @Override public void read(byte[] data,String ipaddress) throws Exception { Object out = data; for (int i = 0; i < queue.size(); i++) { IHandleFlow flow = queue.get(i); Object read = flow.read(out,ipaddress); try { out = Objects.requireNonNull(read); } catch (Exception ignored) { } } } @Override public byte[] write(byte[] data) throws Exception { byte[] out = data; for (int i = 0; i < queue.size(); i++) { IHandleFlow flow = queue.get(i); byte[] write = flow.write(out); try { out = Objects.requireNonNull(write); } catch (Exception ignored) { } } return new byte[0]; } }