code: func (u *DropsondeMarshaller) Run(inputChan <-chan *events.Envelope, outputChan chan<- []byte) {
  	for message := range inputChan {
  
  		messageBytes, err := proto.Marshal(message)
  		if err != nil {
  			u.logger.Errorf("dropsondeMarshaller: marshal error %v", err)
  			metrics.BatchIncrementCounter("dropsondeMarshaller.marshalErrors")
  			continue
  		}
  
  		u.incrementMessageCount(message.GetEventType())
  		outputChan <- messageBytes
  	}
  }
docs: // Run reads Envelopes from inputChan, marshals them to Protocol Buffer format,
  // and emits the binary messages onto outputChan. It operates one message at a
  // time, and will block if outputChan is not read.