xref: /aosp_15_r20/external/webrtc/tools_webrtc/network_emulator/config.py (revision d9f758449e529ab9291ac668be2861e7a55c2422)
1#!/usr/bin/env vpython3
2
3#  Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
4#
5#  Use of this source code is governed by a BSD-style license
6#  that can be found in the LICENSE file in the root of the source
7#  tree. An additional intellectual property rights grant can be found
8#  in the file PATENTS.  All contributing project authors may
9#  be found in the AUTHORS file in the root of the source tree.
10"""Configuration class for network emulation."""
11
12
13class ConnectionConfig:
14  """Configuration containing the characteristics of a network connection."""
15
16  def __init__(self, num, name, receive_bw_kbps, send_bw_kbps, delay_ms,
17               packet_loss_percent, queue_slots):
18    self.num = num
19    self.name = name
20    self.receive_bw_kbps = receive_bw_kbps
21    self.send_bw_kbps = send_bw_kbps
22    self.delay_ms = delay_ms
23    self.packet_loss_percent = packet_loss_percent
24    self.queue_slots = queue_slots
25
26  def __str__(self):
27    """String representing the configuration.
28
29    Returns:
30        A string formatted and padded like this example:
31    12 Name                       375 kbps   375 kbps   10   145 ms  0.1 %
32    """
33    left_aligned_name = self.name.ljust(24, ' ')
34    return '%2s %24s %5s kbps %5s kbps %4s %5s ms  %3s %%' % (
35        self.num, left_aligned_name, self.receive_bw_kbps, self.send_bw_kbps,
36        self.queue_slots, self.delay_ms, self.packet_loss_percent)
37