Created
November 17, 2018 01:49
-
-
Save Aceeri/b99d54151549284b12711736fb3f5dba to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| func (statsd *StatsdProvider) ParsePacket(packet []byte) (*Depth, error) { | |
| var depth Depth | |
| parser := PacketParser{ | |
| buffer: packet, | |
| index: 0, | |
| } | |
| word, err := parser.TakeUntilDelimiter(".") | |
| if err != nil { | |
| return nil, err | |
| } | |
| if word != "queue_depth" { | |
| return nil, fmt.Errorf("Not a queue depth packet") | |
| } | |
| depth.Name, err = parser.TakeUntilDelimiter(".") | |
| if err != nil { | |
| return nil, fmt.Errorf("Error while taking name: %s", err) | |
| } | |
| depth.Sector, err = parser.TakeUntilDelimiter(".") | |
| if err != nil { | |
| return nil, fmt.Errorf("Error while taking sector: %s", err) | |
| } | |
| depth.Ident, err = parser.TakeUntilDelimiter(".") | |
| if err != nil { | |
| return nil, fmt.Errorf("Error while taking ident: %s", err) | |
| } | |
| depth.Address, err = parser.TakeUntilDelimiter(":") | |
| if err != nil { | |
| return nil, fmt.Errorf("Error while taking address: %s", err) | |
| } | |
| queueDepth, err := parser.TakeUntilDelimiter("|") | |
| if err != nil { | |
| return nil, fmt.Errorf("Error while taking queue depth: %s", err) | |
| } | |
| depth.Depth, err = strconv.Atoi(queueDepth) | |
| if err != nil { | |
| return nil, fmt.Errorf("Failed to convert depth (%s) to integer: %s", queueDepth, err) | |
| } | |
| err = parser.Verify("g") | |
| if err != nil { | |
| return nil, fmt.Errorf("Could not fully verify packet: %s", err) | |
| } | |
| return &depth, nil | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment