Signal-iOS/SignalServiceKit/src/Network/NetworkInterfaceSet.swift
Michelle Linington df824254a0 Add low bandwidth mode setting for calls
- New setting in data settings to enable low bandwidth mode for different
network interfaces
- Call service now informs RingRTC of preferred bandwidth mode on call
connect and reachability changes
2021-01-14 23:37:18 -08:00

32 lines
915 B
Swift

//
// Copyright (c) 2020 Open Whisper Systems. All rights reserved.
//
import Foundation
enum NetworkInterface: UInt, Equatable, CaseIterable {
case cellular = 0
case wifi
var singleItemSet: NetworkInterfaceSet {
NetworkInterfaceSet(rawValue: 1 << rawValue)
}
}
public struct NetworkInterfaceSet: OptionSet, Equatable {
public let rawValue: UInt
public init(rawValue: UInt) {
self.rawValue = rawValue
}
public static let none: NetworkInterfaceSet = []
public static let cellular = NetworkInterface.cellular.singleItemSet
public static let wifi = NetworkInterface.wifi.singleItemSet
public static let wifiAndCellular: NetworkInterfaceSet = [.cellular, .wifi]
public var inverted: NetworkInterfaceSet {
let invertedRawValue = rawValue ^ Self.wifiAndCellular.rawValue
return NetworkInterfaceSet(rawValue: invertedRawValue)
}
}