Branje rezultatov proxyja CFNetwork neposredno v C++
Uporabite Appleove C API-je za iskanje proxyja iz C++ in ohranjajte izposojene vrednosti slovarjev žive, ne da bi jih sproščali kot lastniške objekte.
Iskanje proxyja v CFNetwork je C API, ki ga je mogoče uporabljati neposredno iz C++; pretvarjanje vsega v objekte Objective-C je neobvezno. Pokličite CFNetworkCopyProxiesForURL s ciljnim CFURL in nastavitvami iz CFNetworkCopySystemProxySettings, da dobite urejene slovarje proxyja.
| Vrednost | Lastništvo |
|---|---|
| Objekti, ki jih ustvari ali vrne Copy, vključno s potmi in nastavitvami | V lasti klicatelja; sprostite vsak lastniški objekt, ki ni null |
| Slovar iz polja ali ime gostitelja iz slovarja prek Get | Izposojeno; ne sprostite, ne da bi ga prej zadržali |
Za veljavne routes in indeks v obsegu je lahko pridobivanje takšno:
CFDictionaryRef proxy = static_cast<CFDictionaryRef>(
CFArrayGetValueAtIndex(routes, index));
CFStringRef hostname = static_cast<CFStringRef>(
CFDictionaryGetValue(proxy, kCFProxyHostNameKey));
Preberite kCFProxyTypeKey, preden vnos obravnavate kot končno točko. Neposredni in kandidati iz samodejne konfiguracije zahtevajo drugačno obravnavo.
Pretvorite ime gostitelja CFString in vrata CFNumber konkretnega vnosa, dokler je lastnik živ. Pridobljene vrednosti C++ lahko nato vstopijo v konfiguracijo prenosa. Če želite sam CFString obdržati tudi po rezultatu, ga najprej zadržite in pozneje to uravnotežite s CFRelease; sicer končajte, preden sprostite lastnika, ki ga vsebuje.
Ob čiščenju sprostite ustvarjeni/kopirani ciljni URL, slovar nastavitev in polje rezultatov, po potrebi z varovalom obsega. Sam tip CFStringRef spremenljivke ne daje lastništva nad rezultatom Get.