I guess that's because I'm not sure how best to articulate the problem, and I've been struggling to find better terminology on the web.
A good analogy of what I'm trying to do is the follow TCP stream feature in WireShark.
When looking at a bunch of incoming and outgoing TCP packets, you can click on a single packet and it'll show you a view which reassembles all related packets into the incoming/outgoing streams an application would normally see.
I'm trying to implement a simplified version of this which will reassemble request-response pairs given a set of recorded incoming/outgoing messages (which have been parsed).
For the purposes of this analysis, I don't think the details of how the data is transferred will be relevant, we're analysing a recording of the communication some time after it takes place. The raw data that's been recorded is a series of bytes as well as the time our application emitted the read/write call.
I've then done some preprocessing which turns the byte stream from computer to device into a
Vec<Request>, and the byte stream from device to computer is turned into a
Vec<Response>. Any bytes which can't be parsed into a
Response are assumed to be garbage and we skip past them until the start of the next valid message.
The problem I'm trying to solve is how to take a
Vec<Response> and inspect the attached timestamps and IDs to turn the inputs into a
Vec<Transfer> (using the definitions from that playground link). Is there a proper name for this sort of analysis?