summaryrefslogtreecommitdiffhomepage
path: root/ios/MullvadRustRuntime/MullvadAddressCacheProvider.swift
blob: 5de81c733e485d636b045f4b0a57343d8e0a9330 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//
//  MullvadAddressCacheProvider.swift
//  MullvadRustRuntime
//
//  Created by Marco Nikic on 2025-05-15.
//  Copyright © 2025 Mullvad VPN AB. All rights reserved.
//

import Foundation
import MullvadTypes

public func iniSwiftAddressCacheWrapper(provider: DefaultAddressCacheProvider) -> SwiftAddressCacheWrapper {
    let rawProvider = Unmanaged.passUnretained(provider).toOpaque()
    return init_swift_address_cache_wrapper(rawProvider)
}

@_cdecl("swift_get_cached_endpoint")
func getCacheEndpoint(rawAddressCacheProvider: UnsafeMutableRawPointer) -> LateStringDeallocator {
    let addressCacheProvider = Unmanaged<DefaultAddressCacheProvider>.fromOpaque(rawAddressCacheProvider)
        .takeUnretainedValue()
    let cStr = addressCacheProvider.getCurrentEndpoint().description.toCStringPointer()
    return LateStringDeallocator(ptr: cStr, deallocate_ptr: deallocate_pointer(pointer:))
}

func deallocate_pointer(pointer: UnsafePointer<CChar>?) {
    pointer?.deallocate()
}