# File lib/new_relic/agent/pipe_channel_manager.rb, line 93
        def read
          @in.close unless @in.closed?
          @last_read = Time.now
          length_bytes = @out.read(NUM_LENGTH_BYTES)
          if length_bytes
            message_length = deserialize_message_length(length_bytes)
            if message_length
              @out.read(message_length)
            else
              length_hex = length_bytes.bytes.map { |b| b.to_s(16) }.join(' ')
              NewRelic::Agent.logger.error("Failed to deserialize message length from pipe. Bytes: [#{length_hex}]")
              nil
            end
          else
            NewRelic::Agent.logger.error("Failed to read bytes for length from pipe.")
            nil
          end
        end