Example #1
0
File: v2.go Project: pdf/golifx
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
	}
}
Example #2
0
File: v2.go Project: chendo/golifx
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)
		}
	}
}