1
1
mirror of https://github.com/danbee/persephone synced 2025-03-04 08:39:11 +00:00
persephone/Shared/MPDClient/Extensions/MPDClient+Error.swift

57 lines
1.2 KiB
Swift

//
// Error.swift
// Persephone
//
// Created by Daniel Barber on 2019/3/15.
// Copyright © 2019 Dan Barber. All rights reserved.
//
import Foundation
import mpdclient
extension MPDClient {
func checkError() -> Bool {
let error = mpd_connection_get_error(connection)
if error != MPD_ERROR_SUCCESS {
return handleError(mpdError: error)
}
return true
}
func handleError(mpdError: mpd_error) -> Bool {
guard let errorMessage = mpd_connection_get_error_message(connection)
else { return true }
let message = String(cString: errorMessage)
let recovered = mpd_connection_clear_error(connection)
let error = MPDError(
mpdError: mpdError,
recovered: recovered,
message: message
)
delegate?.didRaiseError(mpdClient: self, error: error)
if !recovered {
resetConnection()
}
return recovered
}
func getLastErrorMessage() -> String? {
if mpd_connection_get_error(connection) == MPD_ERROR_SUCCESS {
return nil
}
if let errorMessage = mpd_connection_get_error_message(connection) {
return String(cString: errorMessage)
}
return nil
}
}