if n == 0 { panic("Received empty packet") } envelope := new(events.Envelope) err = proto.Unmarshal(buffer[0:n], envelope) if err != nil { panic(err) } var eventId = envelope.GetEventType().String() switch envelope.GetEventType() { case events.Envelope_HttpStart: eventId += envelope.GetHttpStart().GetPeerType().String() case events.Envelope_HttpStop: eventId += envelope.GetHttpStop().GetPeerType().String() case events.Envelope_Heartbeat: default: panic("Unexpected message type") } if envelope.GetOrigin() != origin { panic("origin not as expected") } func() { lock.Lock() defer lock.Unlock() receivedEvents[eventId] = true }()