toIniString method

String toIniString()

Convert the configuration to an INI format string

Implementation

String toIniString() {
  final buffer = StringBuffer();

  // Ports section
  buffer.writeln('[${ConfigSection.ports.name}]');
  buffer.writeln('MulticastPort = $multicastPort');
  buffer.writeln('BasePort = $basePort');
  buffer.writeln('PortRange = $portRange');
  buffer.writeln('IPv6 = ${ipv6.name}');
  buffer.writeln();

  // Multicast section
  buffer.writeln('[${ConfigSection.multicast.name}]');
  buffer.writeln('ResolveScope = ${resolveScope.name}');

  if (listenAddress != null) {
    buffer.writeln('ListenAddress = $listenAddress');
  } else {
    buffer.writeln('; ListenAddress = ""');
  }

  if (ipv6MulticastGroup != null) {
    buffer.writeln('IPv6MulticastGroup = $ipv6MulticastGroup');
  } else {
    buffer.writeln('; IPv6MulticastGroup = ""');
  }

  buffer.writeln(
    'MachineAddresses = ${_formatAddressList(machineAddresses)}',
  );
  buffer.writeln('LinkAddresses = ${_formatAddressList(linkAddresses)}');
  buffer.writeln('SiteAddresses = ${_formatAddressList(siteAddresses)}');
  buffer.writeln(
    'OrganizationAddresses = ${_formatAddressList(organizationAddresses)}',
  );
  buffer.writeln('GlobalAddresses = ${_formatAddressList(globalAddresses)}');
  buffer.writeln(
    'AddressesOverride = ${_formatAddressList(addressesOverride)}',
  );
  buffer.writeln('TTLOverride = $ttlOverride');
  buffer.writeln();

  // Lab section
  buffer.writeln('[${ConfigSection.lab.name}]');
  buffer.writeln('KnownPeers = ${_formatAddressList(knownPeers)}');
  buffer.writeln('SessionID = $sessionId');
  buffer.writeln();

  // Tuning section
  buffer.writeln('[${ConfigSection.tuning.name}]');
  buffer.writeln('WatchdogCheckInterval = $watchdogCheckInterval');
  buffer.writeln('WatchdogTimeThreshold = $watchdogTimeThreshold');
  buffer.writeln('MulticastMinRTT = $multicastMinRTT');
  buffer.writeln('MulticastMaxRTT = $multicastMaxRTT');
  buffer.writeln('UnicastMinRTT = $unicastMinRTT');
  buffer.writeln('UnicastMaxRTT = $unicastMaxRTT');
  buffer.writeln('ContinuousResolveInterval = $continuousResolveInterval');
  buffer.writeln('TimerResolution = $timerResolution');
  buffer.writeln('MaxCachedQueries = $maxCachedQueries');
  buffer.writeln('TimeUpdateInterval = $timeUpdateInterval');
  buffer.writeln('TimeUpdateMinProbes = $timeUpdateMinProbes');
  buffer.writeln('TimeProbeCount = $timeProbeCount');
  buffer.writeln('TimeProbeInterval = $timeProbeInterval');
  buffer.writeln('TimeProbeMaxRTT = $timeProbeMaxRTT');
  buffer.writeln('OutletBufferReserveMs = $outletBufferReserveMs');
  buffer.writeln('OutletBufferReserveSamples = $outletBufferReserveSamples');
  buffer.writeln('SendSocketBufferSize = $sendSocketBufferSize');
  buffer.writeln('InletBufferReserveMs = $inletBufferReserveMs');
  buffer.writeln('InletBufferReserveSamples = $inletBufferReserveSamples');
  buffer.writeln('ReceiveSocketBufferSize = $receiveSocketBufferSize');
  buffer.writeln('SmoothingHalftime = $smoothingHalftime');
  buffer.writeln(
    'ForceDefaultTimestamps = ${forceDefaultTimestamps.toString().toLowerCase()}',
  );
  buffer.writeln();

  // Log section
  buffer.writeln('[${ConfigSection.log.name}]');
  buffer.writeln('level = $logLevel');

  if (logFile != null) {
    buffer.writeln('file = $logFile');
  } else {
    buffer.writeln('; file = ');
  }

  return buffer.toString();
}