An easy to use Swift wrapper for iPerf.
An application using this package: iPerf SwiftUI
Package implements iPerf server and client.
Usage example:
class IperfRunnerController: ObservableObject, Identifiable {
private var iperfRunner: IperfRunner?
@Published var isDeleted = false
@Published var runnerState: IperfRunnerState = .ready
@Published var debugDescription: String = ""
@Published var displayError: Bool = false
@Published var results = [IperfIntervalResult]() {
didSet {
objectWillChange.send()
}
}
func onResultReceived(result: IperfIntervalResult) {
if result.streams.count > 0 {
results.append(result)
}
}
func onErrorReceived(error: IperfError) {
DispatchQueue.main.async {
self.displayError = error != .IENONE
self.debugDescription = error.debugDescription
}
}
func onNewState(state: IperfRunnerState) {
if state != .unknown && state != runnerState {
DispatchQueue.main.async {
self.runnerState = state
}
}
}
func start() {
self.formInput = formInput
results = []
debugDescription = ""
iperfRunner = IperfRunner(with: IperfConfiguration())
iperfRunner!.start(
onResultReceived,
onErrorReceived,
onNewState
)
}
func stop() {
iperfRunner!.stop()
}
}
The code which requires OpenSSL library is currently commented.