Make rtc_event_log2text handle all events [1/2]

rtc_event_log2text doesn't currently handle all possible RtcEvent-s.
1. This CL - to make sure events are not forgotten in the future, change the succession of if-statements to a switch, so that the compiler would complain if events are ever added, but are not handled here.
2. Next CL - add handling of currently-unhandled events.

BUG=webrtc:8111
NOPRESUBMIT=True

Change-Id: Ia4459b4e760eb0208823fdab69996de0e8420703
Reviewed-on: https://webrtc-review.googlesource.com/1242
Commit-Queue: Elad Alon <eladalon@webrtc.org>
Reviewed-by: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#19861}
diff --git a/logging/rtc_event_log/rtc_event_log2text.cc b/logging/rtc_event_log/rtc_event_log2text.cc
index c7cad48..4d96711 100644
--- a/logging/rtc_event_log/rtc_event_log2text.cc
+++ b/logging/rtc_event_log/rtc_event_log2text.cc
@@ -386,190 +386,260 @@
   }
 
   for (size_t i = 0; i < parsed_stream.GetNumberOfEvents(); i++) {
-    if (FLAG_config && FLAG_video && FLAG_incoming &&
-        parsed_stream.GetEventType(i) ==
-            webrtc::ParsedRtcEventLog::VIDEO_RECEIVER_CONFIG_EVENT) {
-      webrtc::rtclog::StreamConfig config =
-          parsed_stream.GetVideoReceiveConfig(i);
-      std::cout << parsed_stream.GetTimestamp(i) << "\tVIDEO_RECV_CONFIG"
-                << "\tssrc=" << config.remote_ssrc
-                << "\tfeedback_ssrc=" << config.local_ssrc;
-      std::cout << "\textensions={";
-      for (const auto& extension : config.rtp_extensions) {
-        std::cout << extension.ToString() << ",";
-      }
-      std::cout << "}";
-      std::cout << "\tcodecs={";
-      for (const auto& codec : config.codecs) {
-        std::cout << "{name: " << codec.payload_name
-                  << ", payload_type: " << codec.payload_type
-                  << ", rtx_payload_type: " << codec.rtx_payload_type << "}";
-      }
-      std::cout << "}" << std::endl;
-    }
-    if (FLAG_config && FLAG_video && FLAG_outgoing &&
-        parsed_stream.GetEventType(i) ==
-            webrtc::ParsedRtcEventLog::VIDEO_SENDER_CONFIG_EVENT) {
-      std::vector<webrtc::rtclog::StreamConfig> configs =
-          parsed_stream.GetVideoSendConfig(i);
-      for (const auto& config : configs) {
-        std::cout << parsed_stream.GetTimestamp(i) << "\tVIDEO_SEND_CONFIG";
-        std::cout << "\tssrcs=" << config.local_ssrc;
-        std::cout << "\trtx_ssrcs=" << config.rtx_ssrc;
-        std::cout << "\textensions={";
-        for (const auto& extension : config.rtp_extensions) {
-          std::cout << extension.ToString() << ",";
-        }
-        std::cout << "}";
-        std::cout << "\tcodecs={";
-        for (const auto& codec : config.codecs) {
-          std::cout << "{name: " << codec.payload_name
-                    << ", payload_type: " << codec.payload_type
-                    << ", rtx_payload_type: " << codec.rtx_payload_type << "}";
-        }
-        std::cout << "}" << std::endl;
-      }
-    }
-    if (FLAG_config && FLAG_audio && FLAG_incoming &&
-        parsed_stream.GetEventType(i) ==
-            webrtc::ParsedRtcEventLog::AUDIO_RECEIVER_CONFIG_EVENT) {
-      webrtc::rtclog::StreamConfig config =
-          parsed_stream.GetAudioReceiveConfig(i);
-      std::cout << parsed_stream.GetTimestamp(i) << "\tAUDIO_RECV_CONFIG"
-                << "\tssrc=" << config.remote_ssrc
-                << "\tfeedback_ssrc=" << config.local_ssrc;
-      std::cout << "\textensions={";
-      for (const auto& extension : config.rtp_extensions) {
-        std::cout << extension.ToString() << ",";
-      }
-      std::cout << "}";
-      std::cout << "\tcodecs={";
-      for (const auto& codec : config.codecs) {
-        std::cout << "{name: " << codec.payload_name
-                  << ", payload_type: " << codec.payload_type
-                  << ", rtx_payload_type: " << codec.rtx_payload_type << "}";
-      }
-      std::cout << "}" << std::endl;
-    }
-    if (FLAG_config && FLAG_audio && FLAG_outgoing &&
-        parsed_stream.GetEventType(i) ==
-            webrtc::ParsedRtcEventLog::AUDIO_SENDER_CONFIG_EVENT) {
-      webrtc::rtclog::StreamConfig config = parsed_stream.GetAudioSendConfig(i);
-      std::cout << parsed_stream.GetTimestamp(i) << "\tAUDIO_SEND_CONFIG"
-                << "\tssrc=" << config.local_ssrc;
-      std::cout << "\textensions={";
-      for (const auto& extension : config.rtp_extensions) {
-        std::cout << extension.ToString() << ",";
-      }
-      std::cout << "}";
-      std::cout << "\tcodecs={";
-      for (const auto& codec : config.codecs) {
-        std::cout << "{name: " << codec.payload_name
-                  << ", payload_type: " << codec.payload_type
-                  << ", rtx_payload_type: " << codec.rtx_payload_type << "}";
-      }
-      std::cout << "}" << std::endl;
-    }
-    if (FLAG_rtp &&
-        parsed_stream.GetEventType(i) == webrtc::ParsedRtcEventLog::RTP_EVENT) {
-      size_t header_length;
-      size_t total_length;
-      uint8_t header[IP_PACKET_SIZE];
-      webrtc::PacketDirection direction;
-      webrtc::RtpHeaderExtensionMap* extension_map = parsed_stream.GetRtpHeader(
-          i, &direction, header, &header_length, &total_length);
-
-      if (extension_map == nullptr)
-        extension_map = &default_map;
-
-      // Parse header to get SSRC and RTP time.
-      webrtc::RtpUtility::RtpHeaderParser rtp_parser(header, header_length);
-      webrtc::RTPHeader parsed_header;
-      rtp_parser.Parse(&parsed_header, extension_map);
-      MediaType media_type =
-          parsed_stream.GetMediaType(parsed_header.ssrc, direction);
-
-      if (ExcludePacket(direction, media_type, parsed_header.ssrc))
+    switch (parsed_stream.GetEventType(i)) {
+      case webrtc::ParsedRtcEventLog::UNKNOWN_EVENT: {
+        // TODO(eladalon): Implement in new CL.
         continue;
+      }
 
-      std::cout << parsed_stream.GetTimestamp(i) << "\tRTP"
-                << StreamInfo(direction, media_type)
-                << "\tssrc=" << parsed_header.ssrc
-                << "\ttimestamp=" << parsed_header.timestamp;
-      if (parsed_header.extension.hasAbsoluteSendTime) {
-        std::cout << "\tAbsSendTime="
-                  << parsed_header.extension.absoluteSendTime;
+      case webrtc::ParsedRtcEventLog::LOG_START: {
+        // TODO(eladalon): Implement in new CL.
+        continue;
       }
-      if (parsed_header.extension.hasVideoContentType) {
-        std::cout << "\tContentType="
-                  << static_cast<int>(parsed_header.extension.videoContentType);
-      }
-      if (parsed_header.extension.hasVideoRotation) {
-        std::cout << "\tRotation="
-                  << static_cast<int>(parsed_header.extension.videoRotation);
-      }
-      if (parsed_header.extension.hasTransportSequenceNumber) {
-        std::cout << "\tTransportSeq="
-                  << parsed_header.extension.transportSequenceNumber;
-      }
-      if (parsed_header.extension.hasTransmissionTimeOffset) {
-        std::cout << "\tTransmTimeOffset="
-                  << parsed_header.extension.transmissionTimeOffset;
-      }
-      if (parsed_header.extension.hasAudioLevel) {
-        std::cout << "\tAudioLevel=" << parsed_header.extension.audioLevel;
-      }
-      std::cout << std::endl;
-    }
-    if (FLAG_rtcp && parsed_stream.GetEventType(i) ==
-                         webrtc::ParsedRtcEventLog::RTCP_EVENT) {
-      size_t length;
-      uint8_t packet[IP_PACKET_SIZE];
-      webrtc::PacketDirection direction;
-      parsed_stream.GetRtcpPacket(i, &direction, packet, &length);
 
-      webrtc::rtcp::CommonHeader rtcp_block;
-      const uint8_t* packet_end = packet + length;
-      for (const uint8_t* next_block = packet; next_block != packet_end;
-           next_block = rtcp_block.NextPacket()) {
-        ptrdiff_t remaining_blocks_size = packet_end - next_block;
-        RTC_DCHECK_GT(remaining_blocks_size, 0);
-        if (!rtcp_block.Parse(next_block, remaining_blocks_size)) {
-          break;
+      case webrtc::ParsedRtcEventLog::LOG_END: {
+        // TODO(eladalon): Implement in new CL.
+        continue;
+      }
+
+      case webrtc::ParsedRtcEventLog::RTP_EVENT: {
+        if (FLAG_rtp) {
+          size_t header_length;
+          size_t total_length;
+          uint8_t header[IP_PACKET_SIZE];
+          webrtc::PacketDirection direction;
+          webrtc::RtpHeaderExtensionMap* extension_map =
+              parsed_stream.GetRtpHeader(i, &direction, header, &header_length,
+                                         &total_length);
+
+          if (extension_map == nullptr)
+            extension_map = &default_map;
+
+          // Parse header to get SSRC and RTP time.
+          webrtc::RtpUtility::RtpHeaderParser rtp_parser(header, header_length);
+          webrtc::RTPHeader parsed_header;
+          rtp_parser.Parse(&parsed_header, extension_map);
+          MediaType media_type =
+              parsed_stream.GetMediaType(parsed_header.ssrc, direction);
+
+          if (ExcludePacket(direction, media_type, parsed_header.ssrc))
+            continue;
+
+          std::cout << parsed_stream.GetTimestamp(i) << "\tRTP"
+                    << StreamInfo(direction, media_type)
+                    << "\tssrc=" << parsed_header.ssrc
+                    << "\ttimestamp=" << parsed_header.timestamp;
+          if (parsed_header.extension.hasAbsoluteSendTime) {
+            std::cout << "\tAbsSendTime="
+                      << parsed_header.extension.absoluteSendTime;
+          }
+          if (parsed_header.extension.hasVideoContentType) {
+            std::cout << "\tContentType="
+                      << static_cast<int>(
+                             parsed_header.extension.videoContentType);
+          }
+          if (parsed_header.extension.hasVideoRotation) {
+            std::cout << "\tRotation="
+                      << static_cast<int>(
+                             parsed_header.extension.videoRotation);
+          }
+          if (parsed_header.extension.hasTransportSequenceNumber) {
+            std::cout << "\tTransportSeq="
+                      << parsed_header.extension.transportSequenceNumber;
+          }
+          if (parsed_header.extension.hasTransmissionTimeOffset) {
+            std::cout << "\tTransmTimeOffset="
+                      << parsed_header.extension.transmissionTimeOffset;
+          }
+          if (parsed_header.extension.hasAudioLevel) {
+            std::cout << "\tAudioLevel=" << parsed_header.extension.audioLevel;
+          }
+          std::cout << std::endl;
         }
+        continue;
+      }
 
-        uint64_t log_timestamp = parsed_stream.GetTimestamp(i);
-        switch (rtcp_block.type()) {
-          case webrtc::rtcp::SenderReport::kPacketType:
-            PrintSenderReport(parsed_stream, rtcp_block, log_timestamp,
-                              direction);
-            break;
-          case webrtc::rtcp::ReceiverReport::kPacketType:
-            PrintReceiverReport(parsed_stream, rtcp_block, log_timestamp,
+      case webrtc::ParsedRtcEventLog::RTCP_EVENT: {
+        if (FLAG_rtcp) {
+          size_t length;
+          uint8_t packet[IP_PACKET_SIZE];
+          webrtc::PacketDirection direction;
+          parsed_stream.GetRtcpPacket(i, &direction, packet, &length);
+
+          webrtc::rtcp::CommonHeader rtcp_block;
+          const uint8_t* packet_end = packet + length;
+          for (const uint8_t* next_block = packet; next_block != packet_end;
+               next_block = rtcp_block.NextPacket()) {
+            ptrdiff_t remaining_blocks_size = packet_end - next_block;
+            RTC_DCHECK_GT(remaining_blocks_size, 0);
+            if (!rtcp_block.Parse(next_block, remaining_blocks_size)) {
+              break;
+            }
+
+            uint64_t log_timestamp = parsed_stream.GetTimestamp(i);
+            switch (rtcp_block.type()) {
+              case webrtc::rtcp::SenderReport::kPacketType:
+                PrintSenderReport(parsed_stream, rtcp_block, log_timestamp,
+                                  direction);
+                break;
+              case webrtc::rtcp::ReceiverReport::kPacketType:
+                PrintReceiverReport(parsed_stream, rtcp_block, log_timestamp,
+                                    direction);
+                break;
+              case webrtc::rtcp::Sdes::kPacketType:
+                PrintSdes(rtcp_block, log_timestamp, direction);
+                break;
+              case webrtc::rtcp::ExtendedReports::kPacketType:
+                PrintXr(parsed_stream, rtcp_block, log_timestamp, direction);
+                break;
+              case webrtc::rtcp::Bye::kPacketType:
+                PrintBye(parsed_stream, rtcp_block, log_timestamp, direction);
+                break;
+              case webrtc::rtcp::Rtpfb::kPacketType:
+                PrintRtpFeedback(parsed_stream, rtcp_block, log_timestamp,
+                                 direction);
+                break;
+              case webrtc::rtcp::Psfb::kPacketType:
+                PrintPsFeedback(parsed_stream, rtcp_block, log_timestamp,
                                 direction);
-            break;
-          case webrtc::rtcp::Sdes::kPacketType:
-            PrintSdes(rtcp_block, log_timestamp, direction);
-            break;
-          case webrtc::rtcp::ExtendedReports::kPacketType:
-            PrintXr(parsed_stream, rtcp_block, log_timestamp, direction);
-            break;
-          case webrtc::rtcp::Bye::kPacketType:
-            PrintBye(parsed_stream, rtcp_block, log_timestamp, direction);
-            break;
-          case webrtc::rtcp::Rtpfb::kPacketType:
-            PrintRtpFeedback(parsed_stream, rtcp_block, log_timestamp,
-                             direction);
-            break;
-          case webrtc::rtcp::Psfb::kPacketType:
-            PrintPsFeedback(parsed_stream, rtcp_block, log_timestamp,
-                            direction);
-            break;
-          default:
-            break;
+                break;
+              default:
+                break;
+            }
+          }
         }
+        continue;
+      }
+
+      case webrtc::ParsedRtcEventLog::AUDIO_PLAYOUT_EVENT: {
+        // TODO(eladalon): Implement in new CL.
+        continue;
+      }
+
+      case webrtc::ParsedRtcEventLog::LOSS_BASED_BWE_UPDATE: {
+        // TODO(eladalon): Implement in new CL.
+        continue;
+      }
+
+      case webrtc::ParsedRtcEventLog::DELAY_BASED_BWE_UPDATE: {
+        // TODO(eladalon): Implement in new CL.
+        continue;
+      }
+
+      case webrtc::ParsedRtcEventLog::VIDEO_RECEIVER_CONFIG_EVENT: {
+        if (FLAG_config && FLAG_video && FLAG_incoming) {
+          webrtc::rtclog::StreamConfig config =
+              parsed_stream.GetVideoReceiveConfig(i);
+          std::cout << parsed_stream.GetTimestamp(i) << "\tVIDEO_RECV_CONFIG"
+                    << "\tssrc=" << config.remote_ssrc
+                    << "\tfeedback_ssrc=" << config.local_ssrc;
+          std::cout << "\textensions={";
+          for (const auto& extension : config.rtp_extensions) {
+            std::cout << extension.ToString() << ",";
+          }
+          std::cout << "}";
+          std::cout << "\tcodecs={";
+          for (const auto& codec : config.codecs) {
+            std::cout << "{name: " << codec.payload_name
+                      << ", payload_type: " << codec.payload_type
+                      << ", rtx_payload_type: " << codec.rtx_payload_type
+                      << "}";
+          }
+          std::cout << "}" << std::endl;
+        }
+        continue;
+      }
+
+      case webrtc::ParsedRtcEventLog::VIDEO_SENDER_CONFIG_EVENT: {
+        if (FLAG_config && FLAG_video && FLAG_outgoing) {
+          std::vector<webrtc::rtclog::StreamConfig> configs =
+              parsed_stream.GetVideoSendConfig(i);
+          for (const auto& config : configs) {
+            std::cout << parsed_stream.GetTimestamp(i) << "\tVIDEO_SEND_CONFIG";
+            std::cout << "\tssrcs=" << config.local_ssrc;
+            std::cout << "\trtx_ssrcs=" << config.rtx_ssrc;
+            std::cout << "\textensions={";
+            for (const auto& extension : config.rtp_extensions) {
+              std::cout << extension.ToString() << ",";
+            }
+            std::cout << "}";
+            std::cout << "\tcodecs={";
+            for (const auto& codec : config.codecs) {
+              std::cout << "{name: " << codec.payload_name
+                        << ", payload_type: " << codec.payload_type
+                        << ", rtx_payload_type: " << codec.rtx_payload_type
+                        << "}";
+            }
+            std::cout << "}" << std::endl;
+          }
+        }
+        continue;
+      }
+
+      case webrtc::ParsedRtcEventLog::AUDIO_RECEIVER_CONFIG_EVENT: {
+        if (FLAG_config && FLAG_audio && FLAG_incoming) {
+          webrtc::rtclog::StreamConfig config =
+              parsed_stream.GetAudioReceiveConfig(i);
+          std::cout << parsed_stream.GetTimestamp(i) << "\tAUDIO_RECV_CONFIG"
+                    << "\tssrc=" << config.remote_ssrc
+                    << "\tfeedback_ssrc=" << config.local_ssrc;
+          std::cout << "\textensions={";
+          for (const auto& extension : config.rtp_extensions) {
+            std::cout << extension.ToString() << ",";
+          }
+          std::cout << "}";
+          std::cout << "\tcodecs={";
+          for (const auto& codec : config.codecs) {
+            std::cout << "{name: " << codec.payload_name
+                      << ", payload_type: " << codec.payload_type
+                      << ", rtx_payload_type: " << codec.rtx_payload_type
+                      << "}";
+          }
+          std::cout << "}" << std::endl;
+        }
+        continue;
+      }
+
+      case webrtc::ParsedRtcEventLog::AUDIO_SENDER_CONFIG_EVENT: {
+        if (FLAG_config && FLAG_audio && FLAG_outgoing) {
+          webrtc::rtclog::StreamConfig config =
+              parsed_stream.GetAudioSendConfig(i);
+          std::cout << parsed_stream.GetTimestamp(i) << "\tAUDIO_SEND_CONFIG"
+                    << "\tssrc=" << config.local_ssrc;
+          std::cout << "\textensions={";
+          for (const auto& extension : config.rtp_extensions) {
+            std::cout << extension.ToString() << ",";
+          }
+          std::cout << "}";
+          std::cout << "\tcodecs={";
+          for (const auto& codec : config.codecs) {
+            std::cout << "{name: " << codec.payload_name
+                      << ", payload_type: " << codec.payload_type
+                      << ", rtx_payload_type: " << codec.rtx_payload_type
+                      << "}";
+          }
+          std::cout << "}" << std::endl;
+        }
+        continue;
+      }
+
+      case webrtc::ParsedRtcEventLog::AUDIO_NETWORK_ADAPTATION_EVENT: {
+        // TODO(eladalon): Implement in new CL.
+        continue;
+      }
+
+      case webrtc::ParsedRtcEventLog::BWE_PROBE_CLUSTER_CREATED_EVENT: {
+        // TODO(eladalon): Implement in new CL.
+        continue;
+      }
+
+      case webrtc::ParsedRtcEventLog::BWE_PROBE_RESULT_EVENT: {
+        // TODO(eladalon): Implement in new CL.
+        continue;
       }
     }
+
+    RTC_NOTREACHED();
   }
   return 0;
 }