func (p *V2) addLocation(pkt *packet.Packet) { l, err := device.NewLocation(pkt) if err != nil { common.Log.Errorf("Error parsing location: %v", err) return } location, err := p.getLocation(l.ID()) if err == nil { if err := location.Parse(pkt); err != nil { common.Log.Errorf("Error parsing location: %v", err) } return } p.Lock() p.locations[l.ID()] = l p.Unlock() if err := p.publish(common.EventNewLocation{Location: l}); err != nil { common.Log.Errorf("Error adding location to client: %v", err) return } }
func (p *V2) addLocation(pkt *packet.Packet) { l, err := device.NewLocation(pkt) if err != nil { common.Log.Errorf("Error parsing location: %v\n", err) return } p.RLock() location, ok := p.locations[l.ID()] p.RUnlock() if !ok { p.Lock() p.locations[l.ID()] = l p.Unlock() if err := p.publish(common.EventNewLocation{Location: l}); err != nil { common.Log.Errorf("Error adding location to client: %v\n", err) return } } else { if err := location.Parse(pkt); err != nil { common.Log.Errorf("Error parsing location: %v\n", err) } } }