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 static List<IHandleFlow> 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) throws Exception {
|
Object out = data;
|
for (int i = 0; i < queue.size(); i++) {
|
IHandleFlow flow = queue.get(i);
|
Object read = flow.read(out);
|
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];
|
}
|
}
|