我希望按时间顺序排列具有重叠时间戳的两个数据流。我有一个基本的管道和过滤器框架,我正在使用两个PipedInputStreams。
这是字节流的格式。我有五对(id,数据点),然后下一帧再次以id 0开始:
DATA ID (int) TIMESTAMP (long) DATA ID (int) ... DATA ID (int) ...
0 ... 1 ... 2 ...
我想检查两个数据流的时间戳,确定哪个更早,然后读取整个帧。然后我想得到下一个时间戳,将它与之前的新时间戳进行比较,然后继续。
这种对齐是否有最佳实践?
例如,我可以从输入流中提取第一行ID,如下所示:
// Read id
for (int i = 0; i < this.getAmountOfInputPipes(); i++) {
id = readIntFromInput(i);
idList.add(id);
bytesread = bytesread + 4;
}
// Read data (timestamp)
for (int i = 0; i < this.getAmountOfInputPipes(); i++) {
data = readLongFromInput(i);
dataList.add(data);
bytesread = bytesread + 8;
}
我的想法是: 现在我得到了一个TimeStamps列表。我比较它们,找到最早的那个,然后用最早的timeStamp继续读取和写入该帧的完整剩余部分。然后我读取了该inputStream的第一个id和下一个timeStamp。如果一个流结束,我该怎么办?
我有这样的事情:
catch (EndOfStreamException e) {
ClosePorts();
System.out.println(this.getName() + "::Filter exiting...");
break;
} // catch
甚至是流首先结束的问题?或者我只是等待ArrayList为空?
我有一个模糊的想法,但我在实施它时遇到了一些麻烦。提前感谢您的任何想法。
菲利普