lock := sync.RWMutex{} origin := os.Getenv("DROPSONDE_ORIGIN") go func() { defer close(udpDataChan) for { buffer := make([]byte, 1024) n, _, err := udpListener.ReadFrom(buffer) if err != nil { return } 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")
}) }) It("marshals events and delegates to the inner emitter", func() { innerEmitter := fake.NewFakeByteEmitter() origin := "fake-origin" eventEmitter := emitter.NewEventEmitter(innerEmitter, origin) testEvent := factories.NewHeartbeat(1, 2, 3) err := eventEmitter.Emit(testEvent) Expect(err).ToNot(HaveOccurred()) Expect(innerEmitter.GetMessages()).To(HaveLen(1)) msg := innerEmitter.GetMessages()[0] var envelope events.Envelope err = proto.Unmarshal(msg, &envelope) Expect(err).ToNot(HaveOccurred()) Expect(envelope.GetEventType()).To(Equal(events.Envelope_Heartbeat)) }) }) Describe("Close", func() { It("closes the inner emitter", func() { innerEmitter := fake.NewFakeByteEmitter() eventEmitter := emitter.NewEventEmitter(innerEmitter, "") eventEmitter.Close() Expect(innerEmitter.IsClosed()).To(BeTrue()) }) })