code: func SplitMrt(data []byte, atEOF bool) (advance int, token []byte, err error) {
  	if atEOF && len(data) == 0 {
  		return 0, nil, nil
  	}
  	if cap(data) < MRT_COMMON_HEADER_LEN { // read more
  		return 0, nil, nil
  	}
  	//this reads the data
  	hdr := &MRTHeader{}
  	errh := hdr.DecodeFromBytes(data[:MRT_COMMON_HEADER_LEN])
  	if errh != nil {
  		return 0, nil, errh
  	}
  	totlen := int(hdr.Len + MRT_COMMON_HEADER_LEN)
  	if len(data) < totlen { //need to read more
  		return 0, nil, nil
  	}
  	return totlen, data[0:totlen], nil
  }
docs: //This function can be passed into a bufio.Scanner.Split() to read buffered mrt msgs