This method allows you to process the layer as more than one frame. See the discussion for PAYLOAD_IS_BYTE_ STREAM for more information. This method is only called if the layer directly above it in the stack has the PAYLOAD_IS_BYTE_STREAM keyword.
This method has some things in common with a frame recognizer in that its job is to split a byte stream into sections. However, it has some important differences, too. First, it is called on just the payload portion of the frame, and the payloads can be split up across many frames, so the data it works on is not contiguous. Second, this method has access to all the data in the payload at once, unlike the recognizer, which only has access to one byte at a time.
Payloads could be split in a few different ways. Your particular payload may not exhibit all these possibilities. The easiest possibility is that the payload is exactly one layer. (That is also the normal case, where we aren't doing byte stream framing). Another possibility is that the payload could contain two or more layers, but the last byte of the payload is always the end of a layer.
The third case is that the payload is completely independent of physical layers that it resides; that is, a payload can contain 1½ frames, or ½ of a frame, or a layer can extend over many frames. In this third case, you will need to keep the information from previous frames as inter-frame data.
This method returns a value in the variable eAction. The legal values are:
ebsfTotallyContained: The layer is completely contained in this payload.
ebsfReconstructed: This method has reconstructed the layer in a manner like Frame Transformation methods.
ebsfPartial: This payload is just part of a layer. Wait until the next payload comes in to decode it.
If the return value is ebsfReconstructed, then the three variables ausLowIndex, ausHighIndex, and abVirtualFrame must be set.
If the return value is ebsfTotallyContained, then the variable iBytesUsed is set to the number of bytes consumed by this layer.