Skip to content

Commit

Permalink
simplify feature extraction
Browse files Browse the repository at this point in the history
  • Loading branch information
rade authored and dpw committed Jul 9, 2015
1 parent 14d346d commit a05c65c
Showing 1 changed file with 17 additions and 31 deletions.
48 changes: 17 additions & 31 deletions router/connection.go
Expand Up @@ -392,56 +392,42 @@ func (conn *LocalConnection) makeFeatures() map[string]string {

type features map[string]string

func (features features) Get(key string) (string, error) {
val, ok := features[key]
if !ok {
return "", fmt.Errorf("Field %s is missing", key)
func (features features) MustHave(keys []string) error {
for _, key := range keys {
if _, ok := features[key]; !ok {
return fmt.Errorf("Field %s is missing", key)
}
}
return nil
}

return val, nil
func (features features) Get(key string) string {
return features[key]
}

func (conn *LocalConnection) parseFeatures(features features) (*Peer, error) {
str, err := features.Get("PeerNameFlavour")
if err != nil {
if err := features.MustHave([]string{"PeerNameFlavour", "Name", "NickName", "UID", "ConnID"}); err != nil {
return nil, err
}

if str != PeerNameFlavour {
return nil, fmt.Errorf("Peer name flavour mismatch (ours: \"%s\", theirs: \"%s\")", PeerNameFlavour, str)
}

str, err = features.Get("Name")
if err != nil {
return nil, err
remotePeerNameFlavour := features.Get("PeerNameFlavour")
if remotePeerNameFlavour != PeerNameFlavour {
return nil, fmt.Errorf("Peer name flavour mismatch (ours: '%s', theirs: '%s')", PeerNameFlavour, remotePeerNameFlavour)
}

name, err := PeerNameFromString(str)
name, err := PeerNameFromString(features.Get("Name"))
if err != nil {
return nil, err
}

nickName, err := features.Get("NickName")
if err != nil {
return nil, err
}

str, err = features.Get("UID")
if err != nil {
return nil, err
}

uid, err := ParsePeerUID(str)
if err != nil {
return nil, err
}
nickName := features.Get("NickName")

str, err = features.Get("ConnID")
uid, err := ParsePeerUID(features.Get("UID"))
if err != nil {
return nil, err
}

remoteConnID, err := strconv.ParseUint(str, 10, 64)
remoteConnID, err := strconv.ParseUint(features.Get("ConnID"), 10, 64)
if err != nil {
return nil, err
}
Expand Down

0 comments on commit a05c65c

Please sign in to comment.