Swiftpack.co -  Package - igorskh/iperf-swift
Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
igorskh/iperf-swift
An easy to use Swift wrapper for iPerf3
.package(url: "https://github.com/igorskh/iperf-swift.git", from: "v1.2")

Swift wrapper for iPerf

An easy to use Swift wrapper for iPerf.

Usage

An appliction 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](https://raw.github.com/igorskh/iperf-swift/main/) {
        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()
    }
}

Not implemented

The code which requires OpenSSL library is currently commented.

GitHub

link
Stars: 0
Last commit: 2 weeks ago

Release Notes

UDP reporting
21 weeks ago
  • Add stopping state
  • Add more UDP specific measurement reports
  • Change DispatchQueue QoS to userInitiated
  • Set unique UID for each test run

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco