func TestGetStartSequence(t *testing.T) { var start types.Sequence = 4 var head *types.Ring = types.NewRing(10) head.Reassembly = &types.Reassembly{ Seq: 3, Bytes: []byte{1, 2, 3, 4, 5, 6, 7}, } startSeq := getStartSequence(head, start) if startSeq.Difference(start) != 0 { t.Errorf("startSeq %d != start %d\n", startSeq, start) t.Fail() } start = 2 startSeq = getStartSequence(head, start) if startSeq != start.Add(1) { t.Errorf("startSeq %d != start %d\n", startSeq, start.Add(1)) t.Fail() } }
func byteSpan(expected, received types.Sequence, bytes []byte) (toSend []byte, next types.Sequence) { if expected == types.InvalidSequence { return bytes, received.Add(len(bytes)) } span := int(received.Difference(expected)) if span <= 0 { return bytes, received.Add(len(bytes)) } else if len(bytes) < span { return nil, expected } return bytes[span:], expected.Add(len(bytes) - span) }