glide setup and dependencies addition
This commit is contained in:
58
vendor/gopkg.in/routeros.v2/reply.go
generated
vendored
Normal file
58
vendor/gopkg.in/routeros.v2/reply.go
generated
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
package routeros
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
|
||||
"gopkg.in/routeros.v2/proto"
|
||||
)
|
||||
|
||||
// Reply has all the sentences from a reply.
|
||||
type Reply struct {
|
||||
Re []*proto.Sentence
|
||||
Done *proto.Sentence
|
||||
}
|
||||
|
||||
func (r *Reply) String() string {
|
||||
b := &bytes.Buffer{}
|
||||
for _, re := range r.Re {
|
||||
fmt.Fprintf(b, "%s\n", re)
|
||||
}
|
||||
fmt.Fprintf(b, "%s", r.Done)
|
||||
return b.String()
|
||||
}
|
||||
|
||||
// readReply reads one reply synchronously. It returns the reply.
|
||||
func (c *Client) readReply() (*Reply, error) {
|
||||
r := &Reply{}
|
||||
for {
|
||||
sen, err := c.r.ReadSentence()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
done, err := r.processSentence(sen)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if done {
|
||||
return r, nil
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (r *Reply) processSentence(sen *proto.Sentence) (bool, error) {
|
||||
switch sen.Word {
|
||||
case "!re":
|
||||
r.Re = append(r.Re, sen)
|
||||
case "!done":
|
||||
r.Done = sen
|
||||
return true, nil
|
||||
case "!trap", "!fatal":
|
||||
return true, &DeviceError{sen}
|
||||
case "":
|
||||
// API docs say that empty sentences should be ignored
|
||||
default:
|
||||
return true, &UnknownReplyError{sen}
|
||||
}
|
||||
return false, nil
|
||||
}
|
||||
Reference in New Issue
Block a user