// Jackson Coxson #include #include #include namespace IdeviceFFI { Result Provider::tcp_new(const idevice_sockaddr* ip, PairingFile&& pairing, const std::string& label) { IdeviceProviderHandle* out = nullptr; FfiError e(idevice_tcp_provider_new( ip, static_cast(pairing.raw()), label.c_str(), &out)); if (e) { return Err(e); } // Success: Rust consumed the pairing file -> abandon our ownership pairing.release(); return Ok(Provider::adopt(out)); } Result Provider::usbmuxd_new(UsbmuxdAddr&& addr, uint32_t tag, const std::string& udid, uint32_t device_id, const std::string& label) { IdeviceProviderHandle* out = nullptr; FfiError e(usbmuxd_provider_new(static_cast(addr.raw()), tag, udid.c_str(), device_id, label.c_str(), &out)); if (e) { return Err(e); } // Success: Rust consumed the addr -> abandon our ownership addr.release(); return Ok(Provider::adopt(out)); } Result Provider::get_pairing_file() { IdevicePairingFile* out = nullptr; FfiError e(idevice_provider_get_pairing_file(handle_.get(), &out)); if (e) { return Err(e); } return Ok(PairingFile(out)); } } // namespace IdeviceFFI