func (p *parser) jumpLength() (int, error) { lengthIndex, err := p.findIndex([]byte("9=")) if err != nil { return 0, err } lengthIndex += 3 offset, err := p.findIndexAfterOffset(lengthIndex, []byte("\001")) if err != nil { return 0, err } length, err := fix.Atoi(p.buffer[lengthIndex:offset]) if err != nil { return length, err } return offset + length, nil }
func (f *fieldBytes) parseField(rawFieldBytes []byte) (err error) { sepIndex := bytes.IndexByte(rawFieldBytes, '=') if sepIndex == -1 { err = fmt.Errorf("fieldBytes.Parse: No '=' in '%s'", rawFieldBytes) return } parsedTag, err := fix.Atoi(rawFieldBytes[:sepIndex]) if err != nil { err = fmt.Errorf("fieldBytes.Parse: %s", err.Error()) return } f.Tag = fix.Tag(parsedTag) f.Value = rawFieldBytes[(sepIndex + 1):(len(rawFieldBytes) - 1)] f.Data = rawFieldBytes return }