react-native-windows 0.84.0 → 0.84.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Directory.Build.props +2 -17
- package/Folly/ThreadNameStub.cpp +4 -6
- package/Microsoft.ReactNative/Fabric/Composition/TextInput/WindowsTextInputComponentView.cpp +1 -1
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj +1 -7
- package/Microsoft.ReactNative/Microsoft.ReactNative.vcxproj.filters +0 -3
- package/PropertySheets/CIBuildOptimizations.props +2 -2
- package/PropertySheets/Generated/PackageVersion.g.props +3 -3
- package/PropertySheets/JSEngine.props +1 -1
- package/PropertySheets/NuGet.LockFile.props +10 -1
- package/PropertySheets/React.Cpp.props +3 -3
- package/ReactCommon/ReactCommon.vcxproj +0 -5
- package/Scripts/NuGetRestoreForceEvaluateAllSolutions.ps1 +61 -6
- package/Scripts/Tfs/Layout-Desktop-Headers.ps1 +4 -37
- package/Scripts/UpdateNightlyDependencies.ps1 +47 -0
- package/Scripts/creaternwapp.cmd +5 -8
- package/Scripts/creaternwlib.cmd +10 -23
- package/Shared/Shared.vcxitems +2 -0
- package/{Folly → external}/.clang-format +0 -1
- package/external/External.vcxitems +10 -0
- package/external/fast-float/.syncignore +10 -0
- package/external/fast-float/LICENSE-APACHE +190 -0
- package/external/fast-float/LICENSE-BOOST +23 -0
- package/external/fast-float/LICENSE-MIT +27 -0
- package/external/fast-float/README.md +545 -0
- package/external/fast-float/cgmanifest.json +15 -0
- package/external/fast-float/fast-float.vcxitems +14 -0
- package/external/fast-float/include/fast_float/ascii_number.h +588 -0
- package/external/fast-float/include/fast_float/bigint.h +638 -0
- package/external/fast-float/include/fast_float/constexpr_feature_detect.h +46 -0
- package/external/fast-float/include/fast_float/decimal_to_binary.h +212 -0
- package/external/fast-float/include/fast_float/digit_comparison.h +457 -0
- package/external/fast-float/include/fast_float/fast_float.h +59 -0
- package/external/fast-float/include/fast_float/fast_table.h +708 -0
- package/external/fast-float/include/fast_float/float_common.h +1240 -0
- package/external/fast-float/include/fast_float/parse_number.h +399 -0
- package/external/fast-float/sync-config.json +8 -0
- package/external/fmt/.syncignore +10 -0
- package/external/fmt/CONTRIBUTING.md +20 -0
- package/external/fmt/LICENSE +27 -0
- package/external/fmt/README.md +484 -0
- package/external/fmt/doc/ChangeLog-old.md +3290 -0
- package/external/fmt/doc/api.md +650 -0
- package/external/fmt/doc/fmt.css +61 -0
- package/external/fmt/doc/fmt.js +4 -0
- package/external/fmt/doc/get-started.md +222 -0
- package/external/fmt/doc/index.md +151 -0
- package/external/fmt/doc/perf.svg +1 -0
- package/external/fmt/doc/python-license.txt +290 -0
- package/external/fmt/doc/syntax.md +887 -0
- package/external/fmt/fmt.vcxitems +28 -0
- package/external/fmt/include/fmt/args.h +228 -0
- package/external/fmt/include/fmt/base.h +3077 -0
- package/external/fmt/include/fmt/chrono.h +2432 -0
- package/external/fmt/include/fmt/color.h +612 -0
- package/external/fmt/include/fmt/compile.h +529 -0
- package/external/fmt/include/fmt/core.h +5 -0
- package/external/fmt/include/fmt/format-inl.h +1928 -0
- package/external/fmt/include/fmt/format.h +4427 -0
- package/external/fmt/include/fmt/os.h +439 -0
- package/external/fmt/include/fmt/ostream.h +211 -0
- package/external/fmt/include/fmt/printf.h +656 -0
- package/external/fmt/include/fmt/ranges.h +882 -0
- package/external/fmt/include/fmt/std.h +699 -0
- package/external/fmt/include/fmt/xchar.h +322 -0
- package/external/fmt/src/fmt.cc +135 -0
- package/external/fmt/src/format.cc +43 -0
- package/external/fmt/src/os.cc +403 -0
- package/external/fmt/sync-config.json +8 -0
- package/external/folly/.syncignore +60 -0
- package/external/folly/LICENSE +200 -0
- package/external/folly/README.md +263 -0
- package/{fmt → external/folly/folly}/.clang-format +0 -1
- package/external/folly/folly/AtomicHashArray-inl.h +546 -0
- package/external/folly/folly/AtomicHashArray.h +431 -0
- package/external/folly/folly/AtomicHashMap-inl.h +653 -0
- package/external/folly/folly/AtomicHashMap.h +484 -0
- package/external/folly/folly/AtomicIntrusiveLinkedList.h +206 -0
- package/external/folly/folly/AtomicLinkedList.h +110 -0
- package/external/folly/folly/AtomicUnorderedMap.h +522 -0
- package/external/folly/folly/BUCK +1631 -0
- package/external/folly/folly/BUILD_MODE.bzl +72 -0
- package/external/folly/folly/Benchmark.cpp +986 -0
- package/external/folly/folly/Benchmark.h +680 -0
- package/external/folly/folly/BenchmarkUtil.h +47 -0
- package/external/folly/folly/Bits.h +17 -0
- package/external/folly/folly/CMakeLists.txt +110 -0
- package/external/folly/folly/CPortability.h +338 -0
- package/external/folly/folly/CancellationToken-inl.h +449 -0
- package/external/folly/folly/CancellationToken.cpp +250 -0
- package/external/folly/folly/CancellationToken.h +365 -0
- package/external/folly/folly/Chrono.h +132 -0
- package/external/folly/folly/ClockGettimeWrappers.cpp +93 -0
- package/external/folly/folly/ClockGettimeWrappers.h +29 -0
- package/external/folly/folly/ConcurrentBitSet.h +157 -0
- package/external/folly/folly/ConcurrentLazy.h +74 -0
- package/external/folly/folly/ConcurrentSkipList-inl.h +341 -0
- package/external/folly/folly/ConcurrentSkipList.h +824 -0
- package/external/folly/folly/ConstructorCallbackList.h +158 -0
- package/external/folly/folly/Conv.h +2026 -0
- package/external/folly/folly/CppAttributes.h +170 -0
- package/external/folly/folly/CpuId.h +297 -0
- package/external/folly/folly/DefaultKeepAliveExecutor.h +172 -0
- package/external/folly/folly/Demangle.cpp +255 -0
- package/external/folly/folly/Demangle.h +73 -0
- package/external/folly/folly/DiscriminatedPtr.h +236 -0
- package/external/folly/folly/DynamicConverter.h +17 -0
- package/external/folly/folly/Exception.h +150 -0
- package/external/folly/folly/ExceptionString.cpp +51 -0
- package/external/folly/folly/ExceptionString.h +33 -0
- package/external/folly/folly/ExceptionWrapper-inl.h +264 -0
- package/external/folly/folly/ExceptionWrapper.cpp +37 -0
- package/external/folly/folly/ExceptionWrapper.h +377 -0
- package/external/folly/folly/Executor.cpp +111 -0
- package/external/folly/folly/Executor.h +351 -0
- package/external/folly/folly/Expected.h +1725 -0
- package/external/folly/folly/FBString.h +2888 -0
- package/external/folly/folly/FBVector.h +17 -0
- package/external/folly/folly/File.cpp +180 -0
- package/external/folly/folly/File.h +177 -0
- package/external/folly/folly/FileUtil.cpp +378 -0
- package/external/folly/folly/FileUtil.h +332 -0
- package/external/folly/folly/Fingerprint.cpp +135 -0
- package/external/folly/folly/Fingerprint.h +289 -0
- package/external/folly/folly/FixedString.h +2965 -0
- package/external/folly/folly/FollyMemcpy.cpp +30 -0
- package/external/folly/folly/FollyMemcpy.h +23 -0
- package/external/folly/folly/FollyMemset.cpp +29 -0
- package/external/folly/folly/FollyMemset.h +25 -0
- package/external/folly/folly/Format-inl.h +1152 -0
- package/external/folly/folly/Format.cpp +429 -0
- package/external/folly/folly/Format.h +463 -0
- package/external/folly/folly/FormatArg.h +285 -0
- package/external/folly/folly/FormatTraits.h +65 -0
- package/external/folly/folly/Function.h +1159 -0
- package/external/folly/folly/GLog.h +85 -0
- package/external/folly/folly/GroupVarint.cpp +153 -0
- package/external/folly/folly/GroupVarint.h +630 -0
- package/external/folly/folly/Hash.h +20 -0
- package/external/folly/folly/IPAddress.cpp +490 -0
- package/external/folly/folly/IPAddress.h +667 -0
- package/external/folly/folly/IPAddressException.h +82 -0
- package/external/folly/folly/IPAddressV4.cpp +305 -0
- package/external/folly/folly/IPAddressV4.h +495 -0
- package/external/folly/folly/IPAddressV6.cpp +541 -0
- package/external/folly/folly/IPAddressV6.h +627 -0
- package/external/folly/folly/Indestructible.h +164 -0
- package/external/folly/folly/IndexedMemPool.h +550 -0
- package/external/folly/folly/IntrusiveList.h +17 -0
- package/external/folly/folly/Lazy.h +142 -0
- package/external/folly/folly/Likely.h +76 -0
- package/external/folly/folly/MPMCPipeline.h +280 -0
- package/external/folly/folly/MPMCQueue.h +1556 -0
- package/external/folly/folly/MacAddress.cpp +188 -0
- package/external/folly/folly/MacAddress.h +260 -0
- package/external/folly/folly/MapUtil.h +17 -0
- package/external/folly/folly/Math.h +258 -0
- package/external/folly/folly/MaybeManagedPtr.h +120 -0
- package/external/folly/folly/Memory.h +900 -0
- package/external/folly/folly/MicroLock.cpp +76 -0
- package/external/folly/folly/MicroLock.h +354 -0
- package/external/folly/folly/MicroSpinLock.h +17 -0
- package/external/folly/folly/MoveWrapper.h +76 -0
- package/external/folly/folly/ObserverContainer.h +1026 -0
- package/external/folly/folly/Optional.h +743 -0
- package/external/folly/folly/Overload.h +325 -0
- package/external/folly/folly/PackedSyncPtr.h +147 -0
- package/external/folly/folly/Padded.h +464 -0
- package/external/folly/folly/Poly-inl.h +230 -0
- package/external/folly/folly/Poly.h +1095 -0
- package/external/folly/folly/PolyException.h +43 -0
- package/external/folly/folly/Portability.h +644 -0
- package/external/folly/folly/Preprocessor.h +236 -0
- package/external/folly/folly/ProducerConsumerQueue.h +182 -0
- package/external/folly/folly/RWSpinLock.h +17 -0
- package/external/folly/folly/Random-inl.h +86 -0
- package/external/folly/folly/Random.cpp +184 -0
- package/external/folly/folly/Random.h +434 -0
- package/external/folly/folly/Range.h +1772 -0
- package/external/folly/folly/Replaceable.h +636 -0
- package/external/folly/folly/ScopeGuard.cpp +29 -0
- package/external/folly/folly/ScopeGuard.h +420 -0
- package/external/folly/folly/SharedMutex.cpp +81 -0
- package/external/folly/folly/SharedMutex.h +1751 -0
- package/external/folly/folly/Singleton-inl.h +332 -0
- package/external/folly/folly/Singleton.cpp +512 -0
- package/external/folly/folly/Singleton.h +891 -0
- package/external/folly/folly/SingletonThreadLocal.cpp +53 -0
- package/external/folly/folly/SingletonThreadLocal.h +263 -0
- package/external/folly/folly/SocketAddress.cpp +786 -0
- package/external/folly/folly/SocketAddress.h +768 -0
- package/external/folly/folly/SpinLock.h +55 -0
- package/external/folly/folly/String-inl.h +668 -0
- package/external/folly/folly/String.cpp +777 -0
- package/external/folly/folly/String.h +767 -0
- package/external/folly/folly/Subprocess.cpp +1142 -0
- package/external/folly/folly/Subprocess.h +1055 -0
- package/external/folly/folly/Synchronized.h +1833 -0
- package/external/folly/folly/SynchronizedPtr.h +106 -0
- package/external/folly/folly/ThreadCachedInt.h +175 -0
- package/external/folly/folly/ThreadLocal.h +478 -0
- package/external/folly/folly/TimeoutQueue.cpp +78 -0
- package/external/folly/folly/TimeoutQueue.h +123 -0
- package/external/folly/folly/TokenBucket.h +673 -0
- package/external/folly/folly/Traits.h +1442 -0
- package/external/folly/folly/Try-inl.h +372 -0
- package/external/folly/folly/Try.cpp +23 -0
- package/external/folly/folly/Try.h +728 -0
- package/external/folly/folly/UTF8String.h +56 -0
- package/external/folly/folly/Unicode.cpp +201 -0
- package/external/folly/folly/Unicode.h +94 -0
- package/external/folly/folly/Unit.h +65 -0
- package/external/folly/folly/Uri-inl.h +101 -0
- package/external/folly/folly/Uri.cpp +190 -0
- package/external/folly/folly/Uri.h +142 -0
- package/external/folly/folly/Utility.h +932 -0
- package/external/folly/folly/VERSION +1 -0
- package/external/folly/folly/Varint.h +230 -0
- package/external/folly/folly/VirtualExecutor.h +17 -0
- package/external/folly/folly/algorithm/simd/BUCK +47 -0
- package/external/folly/folly/algorithm/simd/Contains.cpp +42 -0
- package/external/folly/folly/algorithm/simd/Contains.h +116 -0
- package/external/folly/folly/algorithm/simd/FindFixed.h +301 -0
- package/external/folly/folly/algorithm/simd/Ignore.h +52 -0
- package/external/folly/folly/algorithm/simd/Movemask.h +207 -0
- package/external/folly/folly/algorithm/simd/detail/BUCK +70 -0
- package/external/folly/folly/algorithm/simd/detail/ContainsImpl.h +91 -0
- package/external/folly/folly/algorithm/simd/detail/SimdAnyOf.h +83 -0
- package/external/folly/folly/algorithm/simd/detail/SimdForEach.h +209 -0
- package/external/folly/folly/algorithm/simd/detail/SimdPlatform.h +445 -0
- package/external/folly/folly/algorithm/simd/detail/Traits.h +125 -0
- package/external/folly/folly/algorithm/simd/detail/UnrollUtils.h +126 -0
- package/external/folly/folly/base64.h +264 -0
- package/external/folly/folly/chrono/BUCK +29 -0
- package/external/folly/folly/chrono/Clock.h +65 -0
- package/external/folly/folly/chrono/Conv.h +712 -0
- package/external/folly/folly/chrono/test/BUCK +26 -0
- package/external/folly/folly/chrono/test/ClockTest.cpp +68 -0
- package/external/folly/folly/chrono/test/ConvTest.cpp +652 -0
- package/external/folly/folly/concurrency/AtomicSharedPtr.h +387 -0
- package/external/folly/folly/concurrency/BUCK +170 -0
- package/external/folly/folly/concurrency/CacheLocality.h +460 -0
- package/external/folly/folly/concurrency/ConcurrentHashMap.h +822 -0
- package/external/folly/folly/concurrency/CoreCachedSharedPtr.h +232 -0
- package/external/folly/folly/concurrency/DeadlockDetector.cpp +27 -0
- package/external/folly/folly/concurrency/DeadlockDetector.h +44 -0
- package/external/folly/folly/concurrency/DynamicBoundedQueue.h +751 -0
- package/external/folly/folly/concurrency/PriorityUnboundedQueueSet.h +207 -0
- package/external/folly/folly/concurrency/ProcessLocalUniqueId.cpp +46 -0
- package/external/folly/folly/concurrency/ProcessLocalUniqueId.h +38 -0
- package/external/folly/folly/concurrency/SingletonRelaxedCounter.h +325 -0
- package/external/folly/folly/concurrency/ThreadCachedSynchronized.h +227 -0
- package/external/folly/folly/concurrency/UnboundedQueue.h +891 -0
- package/external/folly/folly/concurrency/container/BUCK +77 -0
- package/external/folly/folly/concurrency/container/FlatCombiningPriorityQueue.h +426 -0
- package/external/folly/folly/concurrency/container/LockFreeRingBuffer.h +306 -0
- package/external/folly/folly/concurrency/container/RelaxedConcurrentPriorityQueue.h +1212 -0
- package/external/folly/folly/concurrency/container/SingleWriterFixedHashMap.h +322 -0
- package/external/folly/folly/concurrency/container/atomic_grow_array.h +564 -0
- package/external/folly/folly/concurrency/container/test/BUCK +75 -0
- package/external/folly/folly/concurrency/container/test/FlatCombiningPriorityQueueTest.cpp +570 -0
- package/external/folly/folly/concurrency/container/test/LockFreeRingBufferTest.cpp +276 -0
- package/external/folly/folly/concurrency/container/test/RelaxedConcurrentPriorityQueueTest.cpp +1570 -0
- package/external/folly/folly/concurrency/container/test/SingleWriterFixedHashMapTest.cpp +401 -0
- package/external/folly/folly/concurrency/container/test/atomic_grow_array_test.cpp +187 -0
- package/external/folly/folly/concurrency/detail/AtomicSharedPtr-detail.h +212 -0
- package/external/folly/folly/concurrency/detail/ConcurrentHashMap-detail.h +1911 -0
- package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.cpp +43 -0
- package/external/folly/folly/concurrency/memory/AtomicReadMostlyMainPtr.h +190 -0
- package/external/folly/folly/concurrency/memory/BUCK +53 -0
- package/external/folly/folly/concurrency/memory/PrimaryPtr.h +338 -0
- package/external/folly/folly/concurrency/memory/ReadMostlySharedPtr.h +511 -0
- package/external/folly/folly/concurrency/memory/TLRefCount.h +228 -0
- package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrBenchmark.cpp +56 -0
- package/external/folly/folly/concurrency/memory/test/AtomicReadMostlyMainPtrTest.cpp +454 -0
- package/external/folly/folly/concurrency/memory/test/BUCK +95 -0
- package/external/folly/folly/concurrency/memory/test/PrimaryPtrTest.cpp +303 -0
- package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrBenchmark.cpp +138 -0
- package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrStressTest.cpp +75 -0
- package/external/folly/folly/concurrency/memory/test/ReadMostlySharedPtrTest.cpp +378 -0
- package/external/folly/folly/concurrency/memory/test/RefCountBenchmark.cpp +90 -0
- package/external/folly/folly/concurrency/memory/test/RefCountTest.cpp +168 -0
- package/external/folly/folly/concurrency/test/AtomicSharedPtrCounted.h +156 -0
- package/external/folly/folly/concurrency/test/AtomicSharedPtrPerformance.cpp +255 -0
- package/external/folly/folly/concurrency/test/AtomicSharedPtrTest.cpp +257 -0
- package/external/folly/folly/concurrency/test/BUCK +229 -0
- package/external/folly/folly/concurrency/test/CacheLocalityBenchmark.cpp +392 -0
- package/external/folly/folly/concurrency/test/CacheLocalityTest.cpp +1229 -0
- package/external/folly/folly/concurrency/test/ConcurrentHashMapBench.cpp +260 -0
- package/external/folly/folly/concurrency/test/ConcurrentHashMapTest.cpp +1242 -0
- package/external/folly/folly/concurrency/test/CoreCachedSharedPtrTest.cpp +408 -0
- package/external/folly/folly/concurrency/test/DynamicBoundedQueueTest.cpp +984 -0
- package/external/folly/folly/concurrency/test/PriorityUnboundedQueueSetTest.cpp +73 -0
- package/external/folly/folly/concurrency/test/ProcessLocalUniqueIdTest.cpp +66 -0
- package/external/folly/folly/concurrency/test/SingletonRelaxedCounterBench.cpp +101 -0
- package/external/folly/folly/concurrency/test/SingletonRelaxedCounterTest.cpp +185 -0
- package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedBench.cpp +76 -0
- package/external/folly/folly/concurrency/test/ThreadCachedSynchronizedTest.cpp +93 -0
- package/external/folly/folly/concurrency/test/UnboundedQueueTest.cpp +1302 -0
- package/external/folly/folly/container/Access.h +57 -0
- package/external/folly/folly/container/Array.h +87 -0
- package/external/folly/folly/container/BUCK +353 -0
- package/external/folly/folly/container/BitIterator.h +203 -0
- package/external/folly/folly/container/Enumerate.h +162 -0
- package/external/folly/folly/container/EvictingCacheMap.h +730 -0
- package/external/folly/folly/container/F14.md +300 -0
- package/external/folly/folly/container/F14Map-fwd.h +113 -0
- package/external/folly/folly/container/F14Map.h +2108 -0
- package/external/folly/folly/container/F14Set-fwd.h +95 -0
- package/external/folly/folly/container/F14Set.h +1603 -0
- package/external/folly/folly/container/FBVector.h +1711 -0
- package/external/folly/folly/container/Foreach-inl.h +316 -0
- package/external/folly/folly/container/Foreach.h +209 -0
- package/external/folly/folly/container/HeterogeneousAccess-fwd.h +33 -0
- package/external/folly/folly/container/HeterogeneousAccess.h +171 -0
- package/external/folly/folly/container/IntrusiveHeap.h +268 -0
- package/external/folly/folly/container/IntrusiveList.h +131 -0
- package/external/folly/folly/container/Iterator.h +843 -0
- package/external/folly/folly/container/MapUtil.h +376 -0
- package/external/folly/folly/container/Merge.h +90 -0
- package/external/folly/folly/container/RegexMatchCache.cpp +521 -0
- package/external/folly/folly/container/RegexMatchCache.h +699 -0
- package/external/folly/folly/container/Reserve.h +109 -0
- package/external/folly/folly/container/SparseByteSet.h +123 -0
- package/external/folly/folly/container/View.h +81 -0
- package/external/folly/folly/container/WeightedEvictingCacheMap.h +651 -0
- package/external/folly/folly/container/detail/BUCK +115 -0
- package/external/folly/folly/container/detail/BitIteratorDetail.h +87 -0
- package/external/folly/folly/container/detail/F14Defaults.h +34 -0
- package/external/folly/folly/container/detail/F14IntrinsicsAvailability.h +67 -0
- package/external/folly/folly/container/detail/F14MapFallback.h +717 -0
- package/external/folly/folly/container/detail/F14Mask.h +235 -0
- package/external/folly/folly/container/detail/F14Policy.h +1523 -0
- package/external/folly/folly/container/detail/F14SetFallback.h +528 -0
- package/external/folly/folly/container/detail/F14Table.cpp +71 -0
- package/external/folly/folly/container/detail/F14Table.h +2680 -0
- package/external/folly/folly/container/detail/Util.h +303 -0
- package/external/folly/folly/container/detail/tape_detail.h +135 -0
- package/external/folly/folly/container/detail/test/BUCK +14 -0
- package/external/folly/folly/container/detail/test/F14DetailTest.cpp +47 -0
- package/external/folly/folly/container/heap_vector_types.h +1683 -0
- package/external/folly/folly/container/range_traits.h +81 -0
- package/external/folly/folly/container/small_vector.h +1476 -0
- package/external/folly/folly/container/sorted_vector_types.h +1652 -0
- package/external/folly/folly/container/span.h +408 -0
- package/external/folly/folly/container/tape.h +608 -0
- package/external/folly/folly/container/test/.clang-tidy +12 -0
- package/external/folly/folly/container/test/AccessTest.cpp +138 -0
- package/external/folly/folly/container/test/ArrayTest.cpp +84 -0
- package/external/folly/folly/container/test/BUCK +568 -0
- package/external/folly/folly/container/test/BitIteratorBench.cpp +112 -0
- package/external/folly/folly/container/test/BitIteratorTest.cpp +109 -0
- package/external/folly/folly/container/test/EnumerateTest.cpp +294 -0
- package/external/folly/folly/container/test/EvictingCacheMapBench.cpp +80 -0
- package/external/folly/folly/container/test/EvictingCacheMapTest.cpp +842 -0
- package/external/folly/folly/container/test/F14AsanSupportTest.cpp +143 -0
- package/external/folly/folly/container/test/F14FwdTest.cpp +37 -0
- package/external/folly/folly/container/test/F14InterprocessTest.cpp +404 -0
- package/external/folly/folly/container/test/F14MapTest.cpp +2543 -0
- package/external/folly/folly/container/test/F14PolicyTest.cpp +49 -0
- package/external/folly/folly/container/test/F14SetTest.cpp +1738 -0
- package/external/folly/folly/container/test/F14SmallOverheads.cpp +215 -0
- package/external/folly/folly/container/test/F14TestUtil.h +117 -0
- package/external/folly/folly/container/test/FBVectorBenchmark.cpp +380 -0
- package/external/folly/folly/container/test/FBVectorBenchmarks.cpp.h +100 -0
- package/external/folly/folly/container/test/FBVectorTest.cpp +326 -0
- package/external/folly/folly/container/test/FBVectorTests.cpp.h +304 -0
- package/external/folly/folly/container/test/ForeachBenchmark.cpp +388 -0
- package/external/folly/folly/container/test/ForeachTest.cpp +338 -0
- package/external/folly/folly/container/test/HashMapsBench.cpp +458 -0
- package/external/folly/folly/container/test/HeterogeneousAccessTest.cpp +242 -0
- package/external/folly/folly/container/test/IntrusiveHeapTest.cpp +262 -0
- package/external/folly/folly/container/test/IteratorTest.cpp +989 -0
- package/external/folly/folly/container/test/MapUtilTest.cpp +365 -0
- package/external/folly/folly/container/test/MergeTest.cpp +66 -0
- package/external/folly/folly/container/test/RegexMatchCacheTest.cpp +634 -0
- package/external/folly/folly/container/test/ReserveTest.cpp +173 -0
- package/external/folly/folly/container/test/SparseByteSetBenchmark.cpp +153 -0
- package/external/folly/folly/container/test/SparseByteSetTest.cpp +117 -0
- package/external/folly/folly/container/test/TrackingTypes.h +584 -0
- package/external/folly/folly/container/test/UtilTest.cpp +609 -0
- package/external/folly/folly/container/test/WeightedEvictingCacheMapTest.cpp +800 -0
- package/external/folly/folly/container/test/heap_vector_types_test.cpp +1774 -0
- package/external/folly/folly/container/test/range_traits_test.cpp +59 -0
- package/external/folly/folly/container/test/small_vector_test.cpp +1571 -0
- package/external/folly/folly/container/test/sorted_vector_test.cpp +1589 -0
- package/external/folly/folly/container/test/span_test.cpp +520 -0
- package/external/folly/folly/container/test/tape_bench.cpp +200 -0
- package/external/folly/folly/container/test/tape_test.cpp +590 -0
- package/external/folly/folly/defs.bzl +238 -0
- package/external/folly/folly/detail/AsyncTrace.cpp +36 -0
- package/external/folly/folly/detail/AsyncTrace.h +44 -0
- package/external/folly/folly/detail/AtomicHashUtils.h +42 -0
- package/external/folly/folly/detail/AtomicUnorderedMapUtils.h +80 -0
- package/external/folly/folly/detail/BUCK +406 -0
- package/external/folly/folly/detail/DiscriminatedPtrDetail.h +172 -0
- package/external/folly/folly/detail/FileUtilDetail.cpp +63 -0
- package/external/folly/folly/detail/FileUtilDetail.h +85 -0
- package/external/folly/folly/detail/FileUtilVectorDetail.h +81 -0
- package/external/folly/folly/detail/FingerprintPolynomial.h +132 -0
- package/external/folly/folly/detail/Futex-inl.h +123 -0
- package/external/folly/folly/detail/Futex.cpp +273 -0
- package/external/folly/folly/detail/Futex.h +109 -0
- package/external/folly/folly/detail/GroupVarintDetail.h +101 -0
- package/external/folly/folly/detail/IPAddress.cpp +37 -0
- package/external/folly/folly/detail/IPAddress.h +57 -0
- package/external/folly/folly/detail/IPAddressSource.h +278 -0
- package/external/folly/folly/detail/Iterators.h +156 -0
- package/external/folly/folly/detail/MPMCPipelineDetail.h +122 -0
- package/external/folly/folly/detail/MemoryIdler.cpp +233 -0
- package/external/folly/folly/detail/MemoryIdler.h +216 -0
- package/external/folly/folly/detail/PerfScoped.cpp +112 -0
- package/external/folly/folly/detail/PerfScoped.h +70 -0
- package/external/folly/folly/detail/PolyDetail.h +921 -0
- package/external/folly/folly/detail/RangeCommon.cpp +55 -0
- package/external/folly/folly/detail/RangeCommon.h +93 -0
- package/external/folly/folly/detail/RangeSse42.cpp +198 -0
- package/external/folly/folly/detail/RangeSse42.h +30 -0
- package/external/folly/folly/detail/SimpleSimdStringUtils.cpp +31 -0
- package/external/folly/folly/detail/SimpleSimdStringUtils.h +27 -0
- package/external/folly/folly/detail/SimpleSimdStringUtilsImpl.h +63 -0
- package/external/folly/folly/detail/Singleton.h +34 -0
- package/external/folly/folly/detail/SlowFingerprint.h +90 -0
- package/external/folly/folly/detail/SocketFastOpen.cpp +175 -0
- package/external/folly/folly/detail/SocketFastOpen.h +89 -0
- package/external/folly/folly/detail/SplitStringSimd.cpp +84 -0
- package/external/folly/folly/detail/SplitStringSimd.h +151 -0
- package/external/folly/folly/detail/SplitStringSimdImpl.h +149 -0
- package/external/folly/folly/detail/Sse.cpp +35 -0
- package/external/folly/folly/detail/Sse.h +45 -0
- package/external/folly/folly/detail/StaticSingletonManager.cpp +119 -0
- package/external/folly/folly/detail/StaticSingletonManager.h +298 -0
- package/external/folly/folly/detail/ThreadLocalDetail.cpp +492 -0
- package/external/folly/folly/detail/ThreadLocalDetail.h +800 -0
- package/external/folly/folly/detail/TrapOnAvx512.cpp +41 -0
- package/external/folly/folly/detail/TrapOnAvx512.h +21 -0
- package/external/folly/folly/detail/TurnSequencer.h +295 -0
- package/external/folly/folly/detail/TypeList.h +551 -0
- package/external/folly/folly/detail/UniqueInstance.cpp +136 -0
- package/external/folly/folly/detail/UniqueInstance.h +68 -0
- package/external/folly/folly/detail/base64_detail/BUCK +102 -0
- package/external/folly/folly/detail/base64_detail/Base64Api.cpp +40 -0
- package/external/folly/folly/detail/base64_detail/Base64Api.h +101 -0
- package/external/folly/folly/detail/base64_detail/Base64Common.h +80 -0
- package/external/folly/folly/detail/base64_detail/Base64Constants.h +79 -0
- package/external/folly/folly/detail/base64_detail/Base64HiddenConstants.h +129 -0
- package/external/folly/folly/detail/base64_detail/Base64SWAR.cpp +161 -0
- package/external/folly/folly/detail/base64_detail/Base64SWAR.h +32 -0
- package/external/folly/folly/detail/base64_detail/Base64Scalar.h +262 -0
- package/external/folly/folly/detail/base64_detail/Base64Simd.h +102 -0
- package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.cpp +42 -0
- package/external/folly/folly/detail/base64_detail/Base64_SSE4_2.h +33 -0
- package/external/folly/folly/detail/base64_detail/Base64_SSE4_2_Platform.h +167 -0
- package/external/folly/folly/detail/base64_detail/README.md +392 -0
- package/external/folly/folly/detail/base64_detail/tests/BUCK +36 -0
- package/external/folly/folly/detail/base64_detail/tests/Base64AgainstScalarTest.cpp +141 -0
- package/external/folly/folly/detail/base64_detail/tests/Base64PlatformTest.cpp +273 -0
- package/external/folly/folly/detail/base64_detail/tests/Base64SpecialCasesTest.cpp +555 -0
- package/external/folly/folly/detail/test/AsyncTraceTest.cpp +43 -0
- package/external/folly/folly/detail/test/BUCK +118 -0
- package/external/folly/folly/detail/test/FileUtilDetailTest.cpp +56 -0
- package/external/folly/folly/detail/test/PerfScopedTest.cpp +107 -0
- package/external/folly/folly/detail/test/SimpleSimdStringUtilsTest.cpp +92 -0
- package/external/folly/folly/detail/test/SplitStringSimdTest.cpp +242 -0
- package/external/folly/folly/detail/test/StaticSingletonManagerTest.cpp +121 -0
- package/external/folly/folly/detail/test/ThreadLocalBenchmark.cpp +116 -0
- package/external/folly/folly/detail/test/ThreadLocalDetailTest.cpp +194 -0
- package/external/folly/folly/detail/test/TrapOnAvx512TestNegative.cpp +29 -0
- package/external/folly/folly/detail/test/UniqueInstanceTest.cpp +60 -0
- package/external/folly/folly/detail/thread_local_globals.cpp +69 -0
- package/external/folly/folly/detail/thread_local_globals.h +36 -0
- package/external/folly/folly/docs/AtomicHashMap.md +134 -0
- package/external/folly/folly/docs/Benchmark.md +310 -0
- package/external/folly/folly/docs/Conv.md +291 -0
- package/external/folly/folly/docs/Dynamic.md +220 -0
- package/external/folly/folly/docs/DynamicConverter.md +71 -0
- package/external/folly/folly/docs/Executors.md +63 -0
- package/external/folly/folly/docs/FBString.md +46 -0
- package/external/folly/folly/docs/FBVector.md +200 -0
- package/external/folly/folly/docs/Fbvector--graphical_solutions.png +0 -0
- package/external/folly/folly/docs/Format.md +177 -0
- package/external/folly/folly/docs/Function.md +92 -0
- package/external/folly/folly/docs/Futures.md +263 -0
- package/external/folly/folly/docs/GroupVarint.md +46 -0
- package/external/folly/folly/docs/Histogram.md +104 -0
- package/external/folly/folly/docs/MapUtils.md +80 -0
- package/external/folly/folly/docs/Overview.md +263 -0
- package/external/folly/folly/docs/PackedSyncPtr.md +77 -0
- package/external/folly/folly/docs/Poly.md +500 -0
- package/external/folly/folly/docs/ProducerConsumerQueue.md +82 -0
- package/external/folly/folly/docs/Rcu.md +218 -0
- package/external/folly/folly/docs/SmallLocks.md +24 -0
- package/external/folly/folly/docs/Synchronized.md +793 -0
- package/external/folly/folly/docs/ThreadCachedInt.md +98 -0
- package/external/folly/folly/docs/ThreadLocal.md +105 -0
- package/external/folly/folly/docs/Traits.md +161 -0
- package/external/folly/folly/docs/small_vector.md +64 -0
- package/external/folly/folly/docs/style.css +23 -0
- package/external/folly/folly/dynamic-inl.h +17 -0
- package/external/folly/folly/dynamic.h +17 -0
- package/external/folly/folly/folly_extended_library.bzl +28 -0
- package/external/folly/folly/functional/ApplyTuple.h +204 -0
- package/external/folly/folly/functional/BUCK +57 -0
- package/external/folly/folly/functional/Invoke.h +880 -0
- package/external/folly/folly/functional/Partial.h +130 -0
- package/external/folly/folly/functional/protocol.h +203 -0
- package/external/folly/folly/functional/test/ApplyTupleTest.cpp +549 -0
- package/external/folly/folly/functional/test/BUCK +57 -0
- package/external/folly/folly/functional/test/InvokeTest.cpp +483 -0
- package/external/folly/folly/functional/test/PartialTest.cpp +141 -0
- package/external/folly/folly/functional/test/protocol_test.cpp +177 -0
- package/external/folly/folly/functional/test/traits_test.cpp +551 -0
- package/external/folly/folly/functional/traits.h +675 -0
- package/external/folly/folly/hash/BUCK +86 -0
- package/external/folly/folly/hash/Checksum.cpp +275 -0
- package/external/folly/folly/hash/Checksum.h +94 -0
- package/external/folly/folly/hash/FarmHash.h +46 -0
- package/external/folly/folly/hash/Hash.h +1045 -0
- package/external/folly/folly/hash/MurmurHash.h +86 -0
- package/external/folly/folly/hash/SpookyHashV1.cpp +391 -0
- package/external/folly/folly/hash/SpookyHashV1.h +307 -0
- package/external/folly/folly/hash/SpookyHashV2.cpp +392 -0
- package/external/folly/folly/hash/SpookyHashV2.h +339 -0
- package/external/folly/folly/hash/detail/BUCK +26 -0
- package/external/folly/folly/hash/detail/ChecksumDetail.cpp +296 -0
- package/external/folly/folly/hash/detail/ChecksumDetail.h +137 -0
- package/external/folly/folly/hash/detail/Crc32CombineDetail.cpp +191 -0
- package/external/folly/folly/hash/detail/Crc32cDetail.cpp +303 -0
- package/external/folly/folly/hash/test/BUCK +132 -0
- package/external/folly/folly/hash/test/ChecksumBenchmark.cpp +91 -0
- package/external/folly/folly/hash/test/ChecksumTest.cpp +587 -0
- package/external/folly/folly/hash/test/FarmHashTest.cpp +41 -0
- package/external/folly/folly/hash/test/HashBenchmark.cpp +238 -0
- package/external/folly/folly/hash/test/HashTest.cpp +997 -0
- package/external/folly/folly/hash/test/MurmurHashTest.cpp +76 -0
- package/external/folly/folly/hash/test/SpookyHashV1Test.cpp +559 -0
- package/external/folly/folly/hash/test/SpookyHashV2Test.cpp +549 -0
- package/external/folly/folly/hash/test/traits_test.cpp +69 -0
- package/external/folly/folly/hash/traits.h +115 -0
- package/external/folly/folly/json/BUCK +155 -0
- package/external/folly/folly/json/DynamicConverter.h +464 -0
- package/external/folly/folly/json/DynamicParser-inl.h +316 -0
- package/external/folly/folly/json/DynamicParser.cpp +198 -0
- package/external/folly/folly/json/DynamicParser.h +394 -0
- package/external/folly/folly/json/JSONSchema.cpp +1030 -0
- package/external/folly/folly/json/JSONSchema.h +73 -0
- package/external/folly/folly/json/JsonMockUtil.h +73 -0
- package/external/folly/folly/json/JsonTestUtil.cpp +167 -0
- package/external/folly/folly/json/JsonTestUtil.h +88 -0
- package/external/folly/folly/json/bser/BUCK +24 -0
- package/external/folly/folly/json/bser/Bser.h +107 -0
- package/external/folly/folly/json/bser/Dump.cpp +253 -0
- package/external/folly/folly/json/bser/Load.cpp +246 -0
- package/external/folly/folly/json/bser/test/BUCK +14 -0
- package/external/folly/folly/json/bser/test/BserTest.cpp +149 -0
- package/external/folly/folly/json/dynamic.cpp +552 -0
- package/external/folly/folly/json/dynamic.h +1346 -0
- package/external/folly/folly/json/json.h +238 -0
- package/external/folly/folly/json/json_patch.cpp +325 -0
- package/external/folly/folly/json/json_patch.h +126 -0
- package/external/folly/folly/json/json_pointer.cpp +114 -0
- package/external/folly/folly/json/json_pointer.h +87 -0
- package/external/folly/folly/json/test/BUCK +147 -0
- package/external/folly/folly/json/test/DynamicBenchmark.cpp +146 -0
- package/external/folly/folly/json/test/DynamicConverterTest.cpp +518 -0
- package/external/folly/folly/json/test/DynamicOtherTest.cpp +344 -0
- package/external/folly/folly/json/test/DynamicParserTest.cpp +443 -0
- package/external/folly/folly/json/test/DynamicTest.cpp +1647 -0
- package/external/folly/folly/json/test/JSONSchemaTest.cpp +450 -0
- package/external/folly/folly/json/test/JsonBenchmark.cpp +264 -0
- package/external/folly/folly/json/test/JsonOtherTest.cpp +51 -0
- package/external/folly/folly/json/test/JsonTest.cpp +1153 -0
- package/external/folly/folly/json/test/JsonTestUtilTest.cpp +97 -0
- package/external/folly/folly/json/test/json_patch_test.cpp +361 -0
- package/external/folly/folly/json/test/json_pointer_test.cpp +58 -0
- package/external/folly/folly/json/tool/BUCK +13 -0
- package/external/folly/folly/json/tool/JSONSchemaTester.cpp +58 -0
- package/external/folly/folly/json.h +17 -0
- package/external/folly/folly/json_patch.h +17 -0
- package/external/folly/folly/json_pointer.h +17 -0
- package/external/folly/folly/lang/Access.h +29 -0
- package/external/folly/folly/lang/Align.h +240 -0
- package/external/folly/folly/lang/Aligned.h +92 -0
- package/external/folly/folly/lang/Assume.h +82 -0
- package/external/folly/folly/lang/BUCK +287 -0
- package/external/folly/folly/lang/Badge.h +108 -0
- package/external/folly/folly/lang/Bits.h +570 -0
- package/external/folly/folly/lang/BitsClass.h +312 -0
- package/external/folly/folly/lang/Builtin.h +74 -0
- package/external/folly/folly/lang/CArray.h +34 -0
- package/external/folly/folly/lang/CString.cpp +86 -0
- package/external/folly/folly/lang/CString.h +55 -0
- package/external/folly/folly/lang/Cast.h +51 -0
- package/external/folly/folly/lang/CheckedMath.h +253 -0
- package/external/folly/folly/lang/CustomizationPoint.h +58 -0
- package/external/folly/folly/lang/Exception.cpp +822 -0
- package/external/folly/folly/lang/Exception.h +716 -0
- package/external/folly/folly/lang/Extern.h +55 -0
- package/external/folly/folly/lang/Hint-inl.h +144 -0
- package/external/folly/folly/lang/Hint.h +238 -0
- package/external/folly/folly/lang/Keep.h +98 -0
- package/external/folly/folly/lang/New.h +124 -0
- package/external/folly/folly/lang/Ordering.h +140 -0
- package/external/folly/folly/lang/Pretty.h +159 -0
- package/external/folly/folly/lang/PropagateConst.h +413 -0
- package/external/folly/folly/lang/RValueReferenceWrapper.h +152 -0
- package/external/folly/folly/lang/SafeAssert.cpp +589 -0
- package/external/folly/folly/lang/StaticConst.h +33 -0
- package/external/folly/folly/lang/Thunk.h +100 -0
- package/external/folly/folly/lang/TypeInfo.h +58 -0
- package/external/folly/folly/lang/UncaughtExceptions.cpp +17 -0
- package/external/folly/folly/lang/UncaughtExceptions.h +19 -0
- package/external/folly/folly/lang/test/AlignTest.cpp +87 -0
- package/external/folly/folly/lang/test/AlignedTest.cpp +130 -0
- package/external/folly/folly/lang/test/BUCK +258 -0
- package/external/folly/folly/lang/test/BadgeTest.cpp +89 -0
- package/external/folly/folly/lang/test/BitsBenchmark.cpp +164 -0
- package/external/folly/folly/lang/test/BitsClassBenchmark.cpp +122 -0
- package/external/folly/folly/lang/test/BitsClassTest.cpp +379 -0
- package/external/folly/folly/lang/test/BitsTest.cpp +577 -0
- package/external/folly/folly/lang/test/CStringTest.cpp +60 -0
- package/external/folly/folly/lang/test/CastTest.cpp +47 -0
- package/external/folly/folly/lang/test/CheckedMathTest.cpp +394 -0
- package/external/folly/folly/lang/test/ExceptionBench.cpp +427 -0
- package/external/folly/folly/lang/test/ExceptionTest.cpp +413 -0
- package/external/folly/folly/lang/test/ExternTest.cpp +39 -0
- package/external/folly/folly/lang/test/HintTest.cpp +100 -0
- package/external/folly/folly/lang/test/NewTest.cpp +38 -0
- package/external/folly/folly/lang/test/OrderingTest.cpp +105 -0
- package/external/folly/folly/lang/test/PrettyTest.cpp +44 -0
- package/external/folly/folly/lang/test/PropagateConstTest.cpp +356 -0
- package/external/folly/folly/lang/test/RValueReferenceWrapperTest.cpp +85 -0
- package/external/folly/folly/lang/test/SafeAssertTest.cpp +75 -0
- package/external/folly/folly/lang/test/ThunkTest.cpp +105 -0
- package/external/folly/folly/lang/test/ToAsciiBench.cpp +466 -0
- package/external/folly/folly/lang/test/ToAsciiTest.cpp +266 -0
- package/external/folly/folly/lang/test/TypeInfoTest.cpp +56 -0
- package/external/folly/folly/memcpy.S +292 -0
- package/external/folly/folly/memcpy_select_aarch64.cpp +145 -0
- package/external/folly/folly/memory/Arena-inl.h +83 -0
- package/external/folly/folly/memory/Arena.h +325 -0
- package/external/folly/folly/memory/BUCK +191 -0
- package/external/folly/folly/memory/JemallocHugePageAllocator.cpp +449 -0
- package/external/folly/folly/memory/JemallocHugePageAllocator.h +105 -0
- package/external/folly/folly/memory/JemallocHugePageAllocatorTest.cpp +341 -0
- package/external/folly/folly/memory/JemallocNodumpAllocator.cpp +176 -0
- package/external/folly/folly/memory/JemallocNodumpAllocator.h +119 -0
- package/external/folly/folly/memory/JemallocNodumpAllocatorTest.cpp +61 -0
- package/external/folly/folly/memory/MallctlHelper.cpp +37 -0
- package/external/folly/folly/memory/MallctlHelper.h +167 -0
- package/external/folly/folly/memory/Malloc.h +551 -0
- package/external/folly/folly/memory/MemoryResource.h +57 -0
- package/external/folly/folly/memory/ReentrantAllocator.cpp +162 -0
- package/external/folly/folly/memory/ReentrantAllocator.h +261 -0
- package/external/folly/folly/memory/SanitizeAddress.cpp +75 -0
- package/external/folly/folly/memory/SanitizeAddress.h +117 -0
- package/external/folly/folly/memory/SanitizeLeak.cpp +119 -0
- package/external/folly/folly/memory/SanitizeLeak.h +108 -0
- package/external/folly/folly/memory/ThreadCachedArena.cpp +53 -0
- package/external/folly/folly/memory/ThreadCachedArena.h +90 -0
- package/external/folly/folly/memory/UninitializedMemoryHacks.h +426 -0
- package/external/folly/folly/memory/detail/BUCK +10 -0
- package/external/folly/folly/memory/detail/MallocImpl.cpp +52 -0
- package/external/folly/folly/memory/detail/MallocImpl.h +97 -0
- package/external/folly/folly/memory/not_null-inl.h +522 -0
- package/external/folly/folly/memory/not_null.h +449 -0
- package/external/folly/folly/memory/test/ArenaTest.cpp +354 -0
- package/external/folly/folly/memory/test/BUCK +146 -0
- package/external/folly/folly/memory/test/MallctlHelperTest.cpp +169 -0
- package/external/folly/folly/memory/test/MallocBenchmark.cpp +91 -0
- package/external/folly/folly/memory/test/MallocTest.cpp +78 -0
- package/external/folly/folly/memory/test/MemoryResourceTest.cpp +31 -0
- package/external/folly/folly/memory/test/ReentrantAllocatorTest.cpp +144 -0
- package/external/folly/folly/memory/test/SanitizeAddressTest.cpp +67 -0
- package/external/folly/folly/memory/test/SanitizeLeakTest.cpp +139 -0
- package/external/folly/folly/memory/test/ThreadCachedArenaTest.cpp +276 -0
- package/external/folly/folly/memory/test/UninitializedMemoryHacksODR.cpp +21 -0
- package/external/folly/folly/memory/test/UninitializedMemoryHacksTest.cpp +327 -0
- package/external/folly/folly/memory/test/not_null_test.cpp +608 -0
- package/external/folly/folly/memset.S +245 -0
- package/external/folly/folly/memset_select_aarch64.cpp +72 -0
- package/external/folly/folly/portability/Asm.h +50 -0
- package/external/folly/folly/portability/Atomic.h +31 -0
- package/external/folly/folly/portability/BUCK +456 -0
- package/external/folly/folly/portability/Builtins.cpp +31 -0
- package/external/folly/folly/portability/Builtins.h +161 -0
- package/external/folly/folly/portability/Config.h +43 -0
- package/external/folly/folly/portability/Constexpr.h +145 -0
- package/external/folly/folly/portability/Dirent.cpp +140 -0
- package/external/folly/folly/portability/Dirent.h +41 -0
- package/external/folly/folly/portability/Event.h +44 -0
- package/external/folly/folly/portability/Fcntl.cpp +120 -0
- package/external/folly/folly/portability/Fcntl.h +67 -0
- package/external/folly/folly/portability/Filesystem.cpp +67 -0
- package/external/folly/folly/portability/Filesystem.h +114 -0
- package/external/folly/folly/portability/FmtCompile.h +40 -0
- package/external/folly/folly/portability/GFlags.h +139 -0
- package/external/folly/folly/portability/GMock.h +35 -0
- package/external/folly/folly/portability/GTest.h +35 -0
- package/external/folly/folly/portability/IOVec.h +34 -0
- package/external/folly/folly/portability/Libgen.cpp +59 -0
- package/external/folly/folly/portability/Libgen.h +29 -0
- package/external/folly/folly/portability/Libunwind.h +21 -0
- package/external/folly/folly/portability/Malloc.cpp +31 -0
- package/external/folly/folly/portability/Malloc.h +53 -0
- package/external/folly/folly/portability/Math.h +90 -0
- package/external/folly/folly/portability/Memory.h +26 -0
- package/external/folly/folly/portability/OpenSSL.cpp +17 -0
- package/external/folly/folly/portability/OpenSSL.h +102 -0
- package/external/folly/folly/portability/PThread.cpp +697 -0
- package/external/folly/folly/portability/PThread.h +148 -0
- package/external/folly/folly/portability/README.md +21 -0
- package/external/folly/folly/portability/Sched.cpp +41 -0
- package/external/folly/folly/portability/Sched.h +45 -0
- package/external/folly/folly/portability/Sockets.cpp +245 -0
- package/external/folly/folly/portability/Sockets.h +155 -0
- package/external/folly/folly/portability/SourceLocation.h +49 -0
- package/external/folly/folly/portability/Stdio.cpp +77 -0
- package/external/folly/folly/portability/Stdio.h +32 -0
- package/external/folly/folly/portability/Stdlib.cpp +172 -0
- package/external/folly/folly/portability/Stdlib.h +64 -0
- package/external/folly/folly/portability/String.cpp +53 -0
- package/external/folly/folly/portability/String.h +39 -0
- package/external/folly/folly/portability/SysFile.cpp +46 -0
- package/external/folly/folly/portability/SysFile.h +27 -0
- package/external/folly/folly/portability/SysMembarrier.cpp +104 -0
- package/external/folly/folly/portability/SysMembarrier.h +26 -0
- package/external/folly/folly/portability/SysMman.cpp +242 -0
- package/external/folly/folly/portability/SysMman.h +68 -0
- package/external/folly/folly/portability/SysResource.cpp +108 -0
- package/external/folly/folly/portability/SysResource.h +71 -0
- package/external/folly/folly/portability/SysStat.cpp +66 -0
- package/external/folly/folly/portability/SysStat.h +52 -0
- package/external/folly/folly/portability/SysSyscall.h +73 -0
- package/external/folly/folly/portability/SysTime.cpp +62 -0
- package/external/folly/folly/portability/SysTime.h +50 -0
- package/external/folly/folly/portability/SysTypes.h +44 -0
- package/external/folly/folly/portability/SysUio.cpp +179 -0
- package/external/folly/folly/portability/SysUio.h +51 -0
- package/external/folly/folly/portability/Syslog.h +39 -0
- package/external/folly/folly/portability/Time.cpp +357 -0
- package/external/folly/folly/portability/Time.h +74 -0
- package/external/folly/folly/portability/Unistd.h +111 -0
- package/external/folly/folly/portability/Windows.h +108 -0
- package/external/folly/folly/portability/openat2.c +30 -0
- package/external/folly/folly/portability/openat2.h +39 -0
- package/external/folly/folly/portability/test/BUCK +59 -0
- package/external/folly/folly/portability/test/ConstexprTest.cpp +102 -0
- package/external/folly/folly/portability/test/FilesystemTest.cpp +35 -0
- package/external/folly/folly/portability/test/LibgenTest.cpp +35 -0
- package/external/folly/folly/portability/test/OpenSSLPortabilityTest.cpp +108 -0
- package/external/folly/folly/portability/test/PThreadTest.cpp +80 -0
- package/external/folly/folly/portability/test/TimeTest.cpp +90 -0
- package/external/folly/folly/small_vector.h +17 -0
- package/external/folly/folly/somerge_defs.bzl +399 -0
- package/external/folly/folly/sorted_vector_types.h +17 -0
- package/external/folly/folly/stop_watch.h +317 -0
- package/external/folly/folly/synchronization/AsymmetricThreadFence.cpp +91 -0
- package/external/folly/folly/synchronization/AsymmetricThreadFence.h +60 -0
- package/external/folly/folly/synchronization/AtomicNotification-inl.h +146 -0
- package/external/folly/folly/synchronization/AtomicNotification.cpp +34 -0
- package/external/folly/folly/synchronization/AtomicNotification.h +117 -0
- package/external/folly/folly/synchronization/AtomicRef.h +181 -0
- package/external/folly/folly/synchronization/AtomicStruct.h +150 -0
- package/external/folly/folly/synchronization/AtomicUtil-inl.h +482 -0
- package/external/folly/folly/synchronization/AtomicUtil.h +179 -0
- package/external/folly/folly/synchronization/BUCK +418 -0
- package/external/folly/folly/synchronization/Baton.h +419 -0
- package/external/folly/folly/synchronization/CallOnce.h +263 -0
- package/external/folly/folly/synchronization/DelayedInit.h +179 -0
- package/external/folly/folly/synchronization/DistributedMutex-inl.h +1744 -0
- package/external/folly/folly/synchronization/DistributedMutex.cpp +27 -0
- package/external/folly/folly/synchronization/DistributedMutex.h +342 -0
- package/external/folly/folly/synchronization/EventCount.h +200 -0
- package/external/folly/folly/synchronization/FlatCombining.h +629 -0
- package/external/folly/folly/synchronization/Hazptr-fwd.h +217 -0
- package/external/folly/folly/synchronization/Hazptr.cpp +36 -0
- package/external/folly/folly/synchronization/Hazptr.h +209 -0
- package/external/folly/folly/synchronization/HazptrDomain.cpp +68 -0
- package/external/folly/folly/synchronization/HazptrDomain.h +832 -0
- package/external/folly/folly/synchronization/HazptrHolder.h +431 -0
- package/external/folly/folly/synchronization/HazptrObj.h +533 -0
- package/external/folly/folly/synchronization/HazptrObjLinked.h +315 -0
- package/external/folly/folly/synchronization/HazptrRec.h +68 -0
- package/external/folly/folly/synchronization/HazptrThrLocal.h +180 -0
- package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.cpp +46 -0
- package/external/folly/folly/synchronization/HazptrThreadPoolExecutor.h +25 -0
- package/external/folly/folly/synchronization/Latch.h +160 -0
- package/external/folly/folly/synchronization/LifoSem.h +767 -0
- package/external/folly/folly/synchronization/Lock.h +887 -0
- package/external/folly/folly/synchronization/MicroSpinLock.h +154 -0
- package/external/folly/folly/synchronization/NativeSemaphore.h +187 -0
- package/external/folly/folly/synchronization/ParkingLot.cpp +37 -0
- package/external/folly/folly/synchronization/ParkingLot.h +330 -0
- package/external/folly/folly/synchronization/PicoSpinLock.h +167 -0
- package/external/folly/folly/synchronization/RWSpinLock.h +549 -0
- package/external/folly/folly/synchronization/Rcu.cpp +26 -0
- package/external/folly/folly/synchronization/Rcu.h +553 -0
- package/external/folly/folly/synchronization/RelaxedAtomic.h +336 -0
- package/external/folly/folly/synchronization/SanitizeThread.cpp +141 -0
- package/external/folly/folly/synchronization/SanitizeThread.h +166 -0
- package/external/folly/folly/synchronization/SaturatingSemaphore.h +324 -0
- package/external/folly/folly/synchronization/SmallLocks.h +36 -0
- package/external/folly/folly/synchronization/ThrottledLifoSem.h +362 -0
- package/external/folly/folly/synchronization/WaitOptions.cpp +25 -0
- package/external/folly/folly/synchronization/WaitOptions.h +75 -0
- package/external/folly/folly/synchronization/detail/AtomicUtils.h +59 -0
- package/external/folly/folly/synchronization/detail/BUCK +104 -0
- package/external/folly/folly/synchronization/detail/Hardware.cpp +192 -0
- package/external/folly/folly/synchronization/detail/Hardware.h +75 -0
- package/external/folly/folly/synchronization/detail/HazptrUtils.h +339 -0
- package/external/folly/folly/synchronization/detail/InlineFunctionRef.h +229 -0
- package/external/folly/folly/synchronization/detail/Sleeper.cpp +27 -0
- package/external/folly/folly/synchronization/detail/Sleeper.h +62 -0
- package/external/folly/folly/synchronization/detail/Spin.h +96 -0
- package/external/folly/folly/synchronization/detail/ThreadCachedLists.h +174 -0
- package/external/folly/folly/synchronization/detail/ThreadCachedReaders.h +189 -0
- package/external/folly/folly/synchronization/detail/ThreadCachedTag.h +26 -0
- package/external/folly/folly/synchronization/detail/test/BUCK +28 -0
- package/external/folly/folly/synchronization/detail/test/HardwareTest.cpp +74 -0
- package/external/folly/folly/synchronization/detail/test/InlineFunctionRefTest.cpp +286 -0
- package/external/folly/folly/synchronization/example/BUCK +27 -0
- package/external/folly/folly/synchronization/example/HazptrLockFreeLIFO.h +88 -0
- package/external/folly/folly/synchronization/example/HazptrSWMRSet.h +133 -0
- package/external/folly/folly/synchronization/example/HazptrWideCAS.h +62 -0
- package/external/folly/folly/synchronization/test/AtomicNotificationTest.cpp +236 -0
- package/external/folly/folly/synchronization/test/AtomicRefTest.cpp +170 -0
- package/external/folly/folly/synchronization/test/AtomicStructTest.cpp +65 -0
- package/external/folly/folly/synchronization/test/AtomicUtilBench.cpp +457 -0
- package/external/folly/folly/synchronization/test/AtomicUtilTest.cpp +650 -0
- package/external/folly/folly/synchronization/test/BUCK +495 -0
- package/external/folly/folly/synchronization/test/Barrier.h +52 -0
- package/external/folly/folly/synchronization/test/BarrierTest.cpp +56 -0
- package/external/folly/folly/synchronization/test/BatonBenchmark.cpp +77 -0
- package/external/folly/folly/synchronization/test/BatonTest.cpp +164 -0
- package/external/folly/folly/synchronization/test/BatonTestHelpers.h +118 -0
- package/external/folly/folly/synchronization/test/CallOnceBenchmark.cpp +72 -0
- package/external/folly/folly/synchronization/test/CallOnceTest.cpp +153 -0
- package/external/folly/folly/synchronization/test/DelayedInitTest.cpp +281 -0
- package/external/folly/folly/synchronization/test/DistributedMutexTest.cpp +2074 -0
- package/external/folly/folly/synchronization/test/EventCountTest.cpp +124 -0
- package/external/folly/folly/synchronization/test/FlatCombiningBenchmark.cpp +1789 -0
- package/external/folly/folly/synchronization/test/FlatCombiningExamples.h +222 -0
- package/external/folly/folly/synchronization/test/FlatCombiningTest.cpp +121 -0
- package/external/folly/folly/synchronization/test/FlatCombiningTestHelpers.h +227 -0
- package/external/folly/folly/synchronization/test/HazptrTest.cpp +1689 -0
- package/external/folly/folly/synchronization/test/LatchTest.cpp +224 -0
- package/external/folly/folly/synchronization/test/LifoSemBench.cpp +185 -0
- package/external/folly/folly/synchronization/test/LifoSemTests.cpp +353 -0
- package/external/folly/folly/synchronization/test/LockTest.cpp +1239 -0
- package/external/folly/folly/synchronization/test/NativeSemaphoreTest.cpp +37 -0
- package/external/folly/folly/synchronization/test/ParkingLotBenchmark.cpp +239 -0
- package/external/folly/folly/synchronization/test/ParkingLotTest.cpp +170 -0
- package/external/folly/folly/synchronization/test/RWSpinLockTest.cpp +235 -0
- package/external/folly/folly/synchronization/test/RcuBench.cpp +66 -0
- package/external/folly/folly/synchronization/test/RcuTest.cpp +330 -0
- package/external/folly/folly/synchronization/test/RelaxedAtomicTest.cpp +389 -0
- package/external/folly/folly/synchronization/test/SaturatingSemaphoreTest.cpp +166 -0
- package/external/folly/folly/synchronization/test/Semaphore.h +242 -0
- package/external/folly/folly/synchronization/test/SemaphoreTest.cpp +271 -0
- package/external/folly/folly/synchronization/test/SmallLocksBenchmark.cpp +1296 -0
- package/external/folly/folly/synchronization/test/SmallLocksTest.cpp +510 -0
- package/external/folly/folly/synchronization/test/ThreadCachedEpochBench.h +67 -0
- package/external/folly/folly/synchronization/test/ThreadCachedReadersBench.cpp +42 -0
- package/external/folly/folly/synchronization/test/ThreadCachedReadersTest.cpp +52 -0
- package/external/folly/folly/synchronization/test/ThrottledLifoSemTest.cpp +243 -0
- package/external/folly/folly/system/AtFork.cpp +205 -0
- package/external/folly/folly/system/AtFork.h +116 -0
- package/external/folly/folly/system/AuxVector.h +198 -0
- package/external/folly/folly/system/BUCK +144 -0
- package/external/folly/folly/system/EnvUtil.cpp +93 -0
- package/external/folly/folly/system/EnvUtil.h +113 -0
- package/external/folly/folly/system/HardwareConcurrency.cpp +39 -0
- package/external/folly/folly/system/HardwareConcurrency.h +23 -0
- package/external/folly/folly/system/MemoryMapping.cpp +477 -0
- package/external/folly/folly/system/MemoryMapping.h +287 -0
- package/external/folly/folly/system/Pid.cpp +87 -0
- package/external/folly/folly/system/Pid.h +34 -0
- package/external/folly/folly/system/Shell.cpp +33 -0
- package/external/folly/folly/system/Shell.h +93 -0
- package/external/folly/folly/system/ThreadId.cpp +89 -0
- package/external/folly/folly/system/ThreadId.h +62 -0
- package/external/folly/folly/system/ThreadName.cpp +330 -0
- package/external/folly/folly/system/ThreadName.h +72 -0
- package/external/folly/folly/system/test/AtForkTest.cpp +309 -0
- package/external/folly/folly/system/test/AuxVectorTest.cpp +55 -0
- package/external/folly/folly/system/test/BUCK +120 -0
- package/external/folly/folly/system/test/EnvUtilSubprocess.cpp +26 -0
- package/external/folly/folly/system/test/EnvUtilTest.cpp +197 -0
- package/external/folly/folly/system/test/MemoryMappingTest.cpp +179 -0
- package/external/folly/folly/system/test/PidTest.cpp +46 -0
- package/external/folly/folly/system/test/ShellTest.cpp +66 -0
- package/external/folly/folly/system/test/ThreadIdTest.cpp +114 -0
- package/external/folly/folly/system/test/ThreadNameTest.cpp +85 -0
- package/external/folly/folly.vcxitems +164 -0
- package/external/folly/static/logo.svg +1 -0
- package/external/folly/sync-config.json +8 -0
- package/package.json +6 -6
- package/template/cpp-lib/proj/MyLib.sln +0 -33
- package/template/cs-lib/proj/MyLib.sln +0 -33
- package/templates/cpp-app/windows/MyApp.sln +0 -33
- package/templates/cpp-lib/example/metro.config.js +30 -4
- package/templates/cpp-lib/windows/MyLib.sln +0 -33
- package/Folly/Folly.vcxproj +0 -378
- package/Folly/Folly.vcxproj.filters +0 -558
- package/fmt/fmt.vcxproj +0 -153
- package/fmt/fmt.vcxproj.filters +0 -59
- package/fmt/pch.cpp +0 -4
- package/fmt/pch.h +0 -2
- /package/{fmt → external/fmt}/cgmanifest.json +0 -0
- /package/{Folly → external/folly}/Folly.natvis +0 -0
- /package/{Folly → external/folly}/cgmanifest.json +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/ConstexprMath.h +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/Conv.cpp +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/chrono/Hardware.h +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/concurrency/CacheLocality.cpp +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/json/dynamic-inl.h +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/json/json.cpp +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/SafeAssert.h +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/ToAscii.cpp +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/lang/ToAscii.h +0 -0
- /package/{Folly/TEMP_UntilFollyUpdate → external/folly/folly}/portability/Unistd.cpp +0 -0
|
@@ -0,0 +1,768 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
#pragma once
|
|
18
|
+
|
|
19
|
+
#include <sys/types.h>
|
|
20
|
+
|
|
21
|
+
#include <cassert>
|
|
22
|
+
#include <cstddef>
|
|
23
|
+
#include <iosfwd>
|
|
24
|
+
#include <string>
|
|
25
|
+
|
|
26
|
+
#include <folly/IPAddress.h>
|
|
27
|
+
#include <folly/Portability.h>
|
|
28
|
+
#include <folly/Range.h>
|
|
29
|
+
#include <folly/net/NetworkSocket.h>
|
|
30
|
+
#include <folly/portability/Sockets.h>
|
|
31
|
+
|
|
32
|
+
namespace folly {
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Provides a unified interface for socket addresses.
|
|
36
|
+
*
|
|
37
|
+
* @class folly::SocketAddress
|
|
38
|
+
*
|
|
39
|
+
*/
|
|
40
|
+
|
|
41
|
+
class SocketAddress {
|
|
42
|
+
public:
|
|
43
|
+
SocketAddress() = default;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Construct a SocketAddress from a hostname and port.
|
|
47
|
+
*
|
|
48
|
+
* Note: If the host parameter is not a numeric IP address, hostname
|
|
49
|
+
* resolution will be performed, which can be quite slow.
|
|
50
|
+
*
|
|
51
|
+
* Raises std::system_error on error.
|
|
52
|
+
*
|
|
53
|
+
* @param host The IP address (or hostname, if allowNameLookup is true)
|
|
54
|
+
* @param port The port (in host byte order)
|
|
55
|
+
* @param allowNameLookup If true, attempt to perform hostname lookup
|
|
56
|
+
* if the hostname does not appear to be a numeric IP address.
|
|
57
|
+
* This is potentially a very slow operation, so is disabled by
|
|
58
|
+
* default.
|
|
59
|
+
*/
|
|
60
|
+
SocketAddress(const char* host, uint16_t port, bool allowNameLookup = false) {
|
|
61
|
+
// Initialize the address family first,
|
|
62
|
+
// since setFromHostPort() and setFromIpPort() will check it.
|
|
63
|
+
|
|
64
|
+
if (allowNameLookup) {
|
|
65
|
+
setFromHostPort(host, port);
|
|
66
|
+
} else {
|
|
67
|
+
setFromIpPort(host, port);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Similar to the constructor which accepts hostname and port.
|
|
72
|
+
* This variant accepts host as std::string.
|
|
73
|
+
*/
|
|
74
|
+
SocketAddress(
|
|
75
|
+
const std::string& host, uint16_t port, bool allowNameLookup = false) {
|
|
76
|
+
// Initialize the address family first,
|
|
77
|
+
// since setFromHostPort() and setFromIpPort() will check it.
|
|
78
|
+
|
|
79
|
+
if (allowNameLookup) {
|
|
80
|
+
setFromHostPort(host.c_str(), port);
|
|
81
|
+
} else {
|
|
82
|
+
setFromIpPort(host.c_str(), port);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Construct a SocketAddress from a hostname and port.
|
|
87
|
+
*
|
|
88
|
+
* Raises std::system_error on error.
|
|
89
|
+
*
|
|
90
|
+
* @param ipAddr The IP address
|
|
91
|
+
* @param port The port (in host byte order)
|
|
92
|
+
*/
|
|
93
|
+
SocketAddress(const IPAddress& ipAddr, uint16_t port) {
|
|
94
|
+
setFromIpAddrPort(ipAddr, port);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
SocketAddress(const SocketAddress& addr) {
|
|
98
|
+
port_ = addr.port_;
|
|
99
|
+
if (addr.getFamily() == AF_UNIX) {
|
|
100
|
+
storage_.un.init(addr.storage_.un);
|
|
101
|
+
} else {
|
|
102
|
+
storage_ = addr.storage_;
|
|
103
|
+
}
|
|
104
|
+
external_ = addr.external_;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
SocketAddress& operator=(const SocketAddress& addr) {
|
|
108
|
+
if (!external_) {
|
|
109
|
+
if (addr.getFamily() != AF_UNIX) {
|
|
110
|
+
storage_ = addr.storage_;
|
|
111
|
+
} else {
|
|
112
|
+
storage_ = addr.storage_;
|
|
113
|
+
storage_.un.init(addr.storage_.un);
|
|
114
|
+
}
|
|
115
|
+
} else {
|
|
116
|
+
if (addr.getFamily() == AF_UNIX) {
|
|
117
|
+
storage_.un.copy(addr.storage_.un);
|
|
118
|
+
} else {
|
|
119
|
+
storage_.un.free();
|
|
120
|
+
storage_ = addr.storage_;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
port_ = addr.port_;
|
|
124
|
+
external_ = addr.external_;
|
|
125
|
+
return *this;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
SocketAddress(SocketAddress&& addr) noexcept {
|
|
129
|
+
storage_ = addr.storage_;
|
|
130
|
+
port_ = addr.port_;
|
|
131
|
+
external_ = addr.external_;
|
|
132
|
+
addr.external_ = false;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
SocketAddress& operator=(SocketAddress&& addr) {
|
|
136
|
+
std::swap(storage_, addr.storage_);
|
|
137
|
+
std::swap(port_, addr.port_);
|
|
138
|
+
std::swap(external_, addr.external_);
|
|
139
|
+
return *this;
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
~SocketAddress() {
|
|
143
|
+
if (external_) {
|
|
144
|
+
storage_.un.free();
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* Return whether this SocketAddress is initialized.
|
|
150
|
+
*/
|
|
151
|
+
bool isInitialized() const { return (getFamily() != AF_UNSPEC); }
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Return whether this address is within private network.
|
|
155
|
+
*
|
|
156
|
+
* According to RFC1918, the 10/8 prefix, 172.16/12 prefix, and 192.168/16
|
|
157
|
+
* prefix are reserved for private networks.
|
|
158
|
+
* fc00::/7 is the IPv6 version, defined in RFC4139. IPv6 link-local
|
|
159
|
+
* addresses (fe80::/10) are also considered private addresses.
|
|
160
|
+
*
|
|
161
|
+
* The loopback addresses 127/8 and ::1 are also regarded as private networks
|
|
162
|
+
* for the purpose of this function.
|
|
163
|
+
*
|
|
164
|
+
* @return true if this is a private network address, false otherwise
|
|
165
|
+
*/
|
|
166
|
+
bool isPrivateAddress() const;
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* Return whether this address is a loopback address.
|
|
170
|
+
*
|
|
171
|
+
* @return true if this is a loopback address, false otherwise
|
|
172
|
+
*/
|
|
173
|
+
bool isLoopbackAddress() const;
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Reset this SocketAddress by clearing the associated address and
|
|
177
|
+
* freeing up any external storage being used.
|
|
178
|
+
*/
|
|
179
|
+
void reset() {
|
|
180
|
+
if (external_) {
|
|
181
|
+
storage_.un.free();
|
|
182
|
+
}
|
|
183
|
+
storage_.addr = folly::IPAddress();
|
|
184
|
+
external_ = false;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* @overloadbrief Initialize this SocketAddress from a hostname and port.
|
|
189
|
+
*
|
|
190
|
+
* Note: If the host parameter is not a numeric IP address, hostname
|
|
191
|
+
* resolution will be performed, which can be quite slow.
|
|
192
|
+
*
|
|
193
|
+
* If the hostname resolves to multiple addresses, only the first will be
|
|
194
|
+
* returned.
|
|
195
|
+
*
|
|
196
|
+
* Raises std::system_error on error.
|
|
197
|
+
*
|
|
198
|
+
* @param host The hostname or IP address
|
|
199
|
+
* @param port The port (in host byte order)
|
|
200
|
+
*/
|
|
201
|
+
void setFromHostPort(const char* host, uint16_t port);
|
|
202
|
+
/**
|
|
203
|
+
* Similar to the function setFromHostPort above, but accepts the IP address
|
|
204
|
+
* as a std::string.
|
|
205
|
+
*/
|
|
206
|
+
void setFromHostPort(const std::string& host, uint16_t port) {
|
|
207
|
+
setFromHostPort(host.c_str(), port);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* @overloadbrief Initialize this SocketAddress from an IP address and port.
|
|
212
|
+
*
|
|
213
|
+
* This is similar to setFromHostPort(), but only accepts numeric IP
|
|
214
|
+
* addresses. If the IP string does not look like an IP address, it throws a
|
|
215
|
+
* std::invalid_argument rather than trying to perform a hostname resolution.
|
|
216
|
+
*
|
|
217
|
+
* Raises std::system_error on error.
|
|
218
|
+
*
|
|
219
|
+
* @param ip The IP address, as a human-readable string.
|
|
220
|
+
* @param port The port (in host byte order)
|
|
221
|
+
*/
|
|
222
|
+
void setFromIpPort(const char* ip, uint16_t port);
|
|
223
|
+
/**
|
|
224
|
+
* Similar to the function setFromIpPort above, but accepts the IP address as
|
|
225
|
+
* a std::string.
|
|
226
|
+
*/
|
|
227
|
+
void setFromIpPort(const std::string& ip, uint16_t port) {
|
|
228
|
+
setFromIpPort(ip.c_str(), port);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Initialize this SocketAddress from an IPAddress struct and port.
|
|
233
|
+
*
|
|
234
|
+
* @param ip The IP address in IPAddress format
|
|
235
|
+
* @param port The port (in host byte order)
|
|
236
|
+
*/
|
|
237
|
+
void setFromIpAddrPort(const IPAddress& ip, uint16_t port);
|
|
238
|
+
|
|
239
|
+
/**
|
|
240
|
+
* @overloadbrief Initialize this SocketAddress from a local port number.
|
|
241
|
+
*
|
|
242
|
+
* This is intended to be used by server code to determine the address to
|
|
243
|
+
* listen on.
|
|
244
|
+
*
|
|
245
|
+
* If the current machine has any IPv6 addresses configured, an IPv6 address
|
|
246
|
+
* will be returned (since connections from IPv4 clients can be mapped to the
|
|
247
|
+
* IPv6 address). If the machine does not have any IPv6 addresses, an IPv4
|
|
248
|
+
* address will be returned.
|
|
249
|
+
*
|
|
250
|
+
* @param port The local port number (in host byte order)
|
|
251
|
+
*/
|
|
252
|
+
void setFromLocalPort(uint16_t port);
|
|
253
|
+
/**
|
|
254
|
+
* Initialize this SocketAddress from a local port number.
|
|
255
|
+
*
|
|
256
|
+
* This version of setFromLocalPort() accepts the port as a string. A
|
|
257
|
+
* std::invalid_argument will be raised if the string does not refer to a port
|
|
258
|
+
* number. Non-numeric service port names are not accepted.
|
|
259
|
+
*
|
|
260
|
+
* @param port The local port number
|
|
261
|
+
*/
|
|
262
|
+
void setFromLocalPort(const char* port);
|
|
263
|
+
/**
|
|
264
|
+
* Similar to the function setFromLocalPort above, but accepts the port as
|
|
265
|
+
* a std::string.
|
|
266
|
+
*/
|
|
267
|
+
void setFromLocalPort(const std::string& port) {
|
|
268
|
+
return setFromLocalPort(port.c_str());
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* @overloadbrief Initialize this SocketAddress from a local port number and
|
|
273
|
+
* optional IP address.
|
|
274
|
+
*
|
|
275
|
+
* The addressAndPort string may be specified either as "<ip>:<port>", or
|
|
276
|
+
* just as "<port>". If the IP is not specified, the address will be
|
|
277
|
+
* initialized to 0, so that a server socket bound to this address will
|
|
278
|
+
* accept connections on all local IP addresses.
|
|
279
|
+
*
|
|
280
|
+
* Both the IP address and port number must be numeric. DNS host names and
|
|
281
|
+
* non-numeric service port names are not accepted.
|
|
282
|
+
*
|
|
283
|
+
* @param addressAndPort Address and the port separated by ':', or the port
|
|
284
|
+
*/
|
|
285
|
+
void setFromLocalIpPort(const char* addressAndPort);
|
|
286
|
+
/**
|
|
287
|
+
* Similar to the function setFromLocalIpPort above, but accepts the address
|
|
288
|
+
* and port as a std::string.
|
|
289
|
+
*/
|
|
290
|
+
void setFromLocalIpPort(const std::string& addressAndPort) {
|
|
291
|
+
return setFromLocalIpPort(addressAndPort.c_str());
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
* @overloadbrief Initialize this SocketAddress from an IP address and port
|
|
296
|
+
* number.
|
|
297
|
+
*
|
|
298
|
+
* The addressAndPort string must be of the form "<ip>:<port>". E.g.,
|
|
299
|
+
* "10.0.0.1:1234".
|
|
300
|
+
*
|
|
301
|
+
* Both the IP address and port number must be numeric. DNS host names and
|
|
302
|
+
* non-numeric service port names are not accepted.
|
|
303
|
+
*
|
|
304
|
+
* @param addressAndPort Address and the port separated by ':'
|
|
305
|
+
*/
|
|
306
|
+
void setFromIpPort(const char* addressAndPort);
|
|
307
|
+
/**
|
|
308
|
+
* Similar to the function setFromIpPort above, but accepts the address
|
|
309
|
+
* and port as a std::string.
|
|
310
|
+
*/
|
|
311
|
+
void setFromIpPort(const std::string& addressAndPort) {
|
|
312
|
+
return setFromIpPort(addressAndPort.c_str());
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
/**
|
|
316
|
+
* @overloadbrief Initialize this SocketAddress from a host name and port
|
|
317
|
+
* number.
|
|
318
|
+
*
|
|
319
|
+
* The addressAndPort string must be of the form "<host>:<port>". E.g.,
|
|
320
|
+
* "www.facebook.com:443".
|
|
321
|
+
*
|
|
322
|
+
* If the host name is not a numeric IP address, a DNS lookup will be
|
|
323
|
+
* performed. Beware that the DNS lookup may be very slow. The port number
|
|
324
|
+
* must be numeric; non-numeric service port names are not accepted.
|
|
325
|
+
*
|
|
326
|
+
* @param hostAndPort Host name and the port separated by ':'
|
|
327
|
+
*/
|
|
328
|
+
void setFromHostPort(const char* hostAndPort);
|
|
329
|
+
/**
|
|
330
|
+
* Similar to the function setFromHostPort above, but accepts the host name
|
|
331
|
+
* and port as a std::string.
|
|
332
|
+
*/
|
|
333
|
+
void setFromHostPort(const std::string& hostAndPort) {
|
|
334
|
+
return setFromHostPort(hostAndPort.c_str());
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* Returns the port number from the given socketaddr structure.
|
|
339
|
+
*
|
|
340
|
+
* Currently only IPv4 and IPv6 are supported.
|
|
341
|
+
*
|
|
342
|
+
* @param address The socketaddr structure to get port from
|
|
343
|
+
*
|
|
344
|
+
* @return The port number, or -1 for unsupported socket families.
|
|
345
|
+
*/
|
|
346
|
+
static int getPortFrom(const struct sockaddr* address);
|
|
347
|
+
|
|
348
|
+
/**
|
|
349
|
+
* Returns the family name from the given socketaddr structure (e.g.: AF_INET6
|
|
350
|
+
* for IPv6).
|
|
351
|
+
*
|
|
352
|
+
* @param address The socketaddr structure to get family name from
|
|
353
|
+
* @param defaultResult The default family name to be returned in case of
|
|
354
|
+
* unsupported socket. If no value is passed, `nullptr` is returned as default
|
|
355
|
+
* family name.
|
|
356
|
+
*
|
|
357
|
+
* @return The family name, or `defaultResult` passed for unsupported socket
|
|
358
|
+
* families.
|
|
359
|
+
*/
|
|
360
|
+
static const char* getFamilyNameFrom(
|
|
361
|
+
const struct sockaddr* address, const char* defaultResult = nullptr);
|
|
362
|
+
|
|
363
|
+
/**
|
|
364
|
+
* @overloadbrief Initialize this SocketAddress from a local unix path.
|
|
365
|
+
*
|
|
366
|
+
* Raises std::invalid_argument on error.
|
|
367
|
+
*
|
|
368
|
+
* @param path Local unix path
|
|
369
|
+
*/
|
|
370
|
+
void setFromPath(StringPiece path);
|
|
371
|
+
/**
|
|
372
|
+
* Similar to setFromPath, but accepts local unix path as const char* and
|
|
373
|
+
* its length.
|
|
374
|
+
*/
|
|
375
|
+
void setFromPath(const char* path, size_t length) {
|
|
376
|
+
setFromPath(StringPiece{path, length});
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
/**
|
|
380
|
+
* Construct a SocketAddress from a local unix socket path.
|
|
381
|
+
*
|
|
382
|
+
* Raises std::invalid_argument on error.
|
|
383
|
+
*
|
|
384
|
+
* @param path The Unix domain socket path.
|
|
385
|
+
*/
|
|
386
|
+
static SocketAddress makeFromPath(StringPiece path) {
|
|
387
|
+
SocketAddress addr;
|
|
388
|
+
addr.setFromPath(path);
|
|
389
|
+
return addr;
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
/**
|
|
393
|
+
* Initialize this SocketAddress from a socket's peer address.
|
|
394
|
+
*
|
|
395
|
+
* Raises std::system_error on error.
|
|
396
|
+
*
|
|
397
|
+
* @param socket Socket whose peer address is used to initialize
|
|
398
|
+
*/
|
|
399
|
+
void setFromPeerAddress(NetworkSocket socket);
|
|
400
|
+
|
|
401
|
+
/**
|
|
402
|
+
* Initialize this SocketAddress from a socket's local address.
|
|
403
|
+
*
|
|
404
|
+
* Raises std::system_error on error.
|
|
405
|
+
*
|
|
406
|
+
* @param socket Socket whose local address is used to initialize
|
|
407
|
+
*/
|
|
408
|
+
void setFromLocalAddress(NetworkSocket socket);
|
|
409
|
+
|
|
410
|
+
/**
|
|
411
|
+
* Initialize this folly::SocketAddress from a struct sockaddr.
|
|
412
|
+
*
|
|
413
|
+
* Raises std::system_error on error.
|
|
414
|
+
*
|
|
415
|
+
* This method is not supported for AF_UNIX addresses. For unix addresses,
|
|
416
|
+
* the address length must be explicitly specified.
|
|
417
|
+
*
|
|
418
|
+
* @param address A struct sockaddr. The size of the address is implied
|
|
419
|
+
* from address->sa_family.
|
|
420
|
+
*/
|
|
421
|
+
void setFromSockaddr(const struct sockaddr* address);
|
|
422
|
+
|
|
423
|
+
/**
|
|
424
|
+
* Initialize this SocketAddress from a struct sockaddr.
|
|
425
|
+
*
|
|
426
|
+
* Raises std::system_error on error.
|
|
427
|
+
*
|
|
428
|
+
* @param address A struct sockaddr.
|
|
429
|
+
* @param addrlen The length of address data available. This must be long
|
|
430
|
+
* enough for the full address type required by
|
|
431
|
+
* address->sa_family.
|
|
432
|
+
*/
|
|
433
|
+
void setFromSockaddr(const struct sockaddr* address, socklen_t addrlen);
|
|
434
|
+
|
|
435
|
+
/**
|
|
436
|
+
* Initialize this SocketAddress from a struct sockaddr_in.
|
|
437
|
+
*
|
|
438
|
+
* @param address A struct sockaddr_in to initialize from
|
|
439
|
+
*/
|
|
440
|
+
void setFromSockaddr(const struct sockaddr_in* address);
|
|
441
|
+
|
|
442
|
+
/**
|
|
443
|
+
* Initialize this SocketAddress from a struct sockaddr_in6.
|
|
444
|
+
*
|
|
445
|
+
* @param address A struct sockaddr_in to initialize from
|
|
446
|
+
*/
|
|
447
|
+
void setFromSockaddr(const struct sockaddr_in6* address);
|
|
448
|
+
|
|
449
|
+
/**
|
|
450
|
+
* Initialize this SocketAddress from a struct sockaddr_un.
|
|
451
|
+
*
|
|
452
|
+
* Note that the addrlen parameter is necessary to properly detect anonymous
|
|
453
|
+
* addresses, which have 0 valid path bytes, and may not even have a NUL
|
|
454
|
+
* character at the start of the path.
|
|
455
|
+
*
|
|
456
|
+
* @param address A struct sockaddr_un.
|
|
457
|
+
* @param addrlen The length of address data. This should include all of
|
|
458
|
+
* the valid bytes of sun_path, not including any NUL
|
|
459
|
+
* terminator.
|
|
460
|
+
*/
|
|
461
|
+
void setFromSockaddr(const struct sockaddr_un* address, socklen_t addrlen);
|
|
462
|
+
|
|
463
|
+
/**
|
|
464
|
+
* Fill in a given sockaddr_storage with the ip or unix address.
|
|
465
|
+
*
|
|
466
|
+
* @param addr sockaddr_storage out parameter
|
|
467
|
+
*
|
|
468
|
+
* @return The actual size of the socket address
|
|
469
|
+
*/
|
|
470
|
+
socklen_t getAddress(sockaddr_storage* addr) const {
|
|
471
|
+
if (!external_) {
|
|
472
|
+
return storage_.addr.toSockaddrStorage(addr, htons(port_));
|
|
473
|
+
} else {
|
|
474
|
+
memcpy(addr, storage_.un.addr, sizeof(*storage_.un.addr));
|
|
475
|
+
return storage_.un.len;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
/**
|
|
480
|
+
* Return the IP address of this SocketAddress.
|
|
481
|
+
*
|
|
482
|
+
* @throws folly::InvalidAddressFamilyException if the family is not IPv4 or
|
|
483
|
+
* IPv6
|
|
484
|
+
*
|
|
485
|
+
* @return IP address
|
|
486
|
+
*/
|
|
487
|
+
const folly::IPAddress& getIPAddress() const;
|
|
488
|
+
|
|
489
|
+
/**
|
|
490
|
+
* DEPRECATED: SocketAddress::getAddress() above returns the same size as
|
|
491
|
+
* getActualSize()
|
|
492
|
+
*
|
|
493
|
+
* Return the size of the underlying socket address
|
|
494
|
+
*
|
|
495
|
+
* @return The size of the socket address
|
|
496
|
+
*/
|
|
497
|
+
socklen_t getActualSize() const;
|
|
498
|
+
|
|
499
|
+
/**
|
|
500
|
+
* Return the address family of this SocketAddress
|
|
501
|
+
*
|
|
502
|
+
* @return Socket address family
|
|
503
|
+
*/
|
|
504
|
+
sa_family_t getFamily() const {
|
|
505
|
+
assert(external_ || AF_UNIX != storage_.addr.family());
|
|
506
|
+
return external_ ? sa_family_t(AF_UNIX) : storage_.addr.family();
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
/**
|
|
510
|
+
* Return if the SocketAddress is `empty` i.e., the address family is
|
|
511
|
+
* unspecified.
|
|
512
|
+
*
|
|
513
|
+
* @return true, if socket is `empty` i.e., address family is unspecified,
|
|
514
|
+
* else false
|
|
515
|
+
*/
|
|
516
|
+
bool empty() const { return getFamily() == AF_UNSPEC; }
|
|
517
|
+
|
|
518
|
+
/**
|
|
519
|
+
* Get a string representation of the IPv4 or IPv6 address.
|
|
520
|
+
*
|
|
521
|
+
* Raises std::invalid_argument if an error occurs (for example, if
|
|
522
|
+
* the address is not an IPv4 or IPv6 address).
|
|
523
|
+
*
|
|
524
|
+
* @return String representation of the IP address
|
|
525
|
+
*/
|
|
526
|
+
std::string getAddressStr() const;
|
|
527
|
+
|
|
528
|
+
/**
|
|
529
|
+
* Get a string representation of the IPv4 or IPv6 address.
|
|
530
|
+
*
|
|
531
|
+
* Raises std::invalid_argument if an error occurs (for example, if
|
|
532
|
+
* the address is not an IPv4 or IPv6 address).
|
|
533
|
+
*
|
|
534
|
+
* @param buf Char buffer to write the string representation into
|
|
535
|
+
* @param buflen Size of the buffer
|
|
536
|
+
*/
|
|
537
|
+
void getAddressStr(char* buf, size_t buflen) const;
|
|
538
|
+
|
|
539
|
+
/**
|
|
540
|
+
* Return whether this address is a valid IPv4 or IPv6 address.
|
|
541
|
+
*
|
|
542
|
+
* @return true if address a valid IPv4 or IPv6 address, false otherwise
|
|
543
|
+
*/
|
|
544
|
+
bool isFamilyInet() const;
|
|
545
|
+
|
|
546
|
+
/**
|
|
547
|
+
* For v4 & v6 addresses, return the fully qualified address string
|
|
548
|
+
*
|
|
549
|
+
* Raises std::invalid_argument if this is not an IPv4 or IPv6 address.
|
|
550
|
+
*
|
|
551
|
+
* @return Fully qualified IP address
|
|
552
|
+
*/
|
|
553
|
+
std::string getFullyQualified() const;
|
|
554
|
+
|
|
555
|
+
/**
|
|
556
|
+
* Get the IPv4 or IPv6 port for this address.
|
|
557
|
+
*
|
|
558
|
+
* Raises std::invalid_argument if this is not an IPv4 or IPv6 address.
|
|
559
|
+
*
|
|
560
|
+
* @return The port, in host byte order
|
|
561
|
+
*/
|
|
562
|
+
uint16_t getPort() const;
|
|
563
|
+
|
|
564
|
+
/**
|
|
565
|
+
* Set the IPv4 or IPv6 port for this address.
|
|
566
|
+
*
|
|
567
|
+
* Raises std::invalid_argument if this is not an IPv4 or IPv6 address.
|
|
568
|
+
*
|
|
569
|
+
* @param port The port to set, in host byte order
|
|
570
|
+
*/
|
|
571
|
+
void setPort(uint16_t port);
|
|
572
|
+
|
|
573
|
+
/**
|
|
574
|
+
* Return true if this is an IPv4-mapped IPv6 address.
|
|
575
|
+
*
|
|
576
|
+
* @return true if this address is a IPv6 address which is IPv4-mapped,
|
|
577
|
+
* false otherwise
|
|
578
|
+
*/
|
|
579
|
+
bool isIPv4Mapped() const {
|
|
580
|
+
return (getFamily() == AF_INET6 && storage_.addr.isIPv4Mapped());
|
|
581
|
+
}
|
|
582
|
+
|
|
583
|
+
/**
|
|
584
|
+
* Convert an IPv4-mapped IPv6 address to an IPv4 address.
|
|
585
|
+
*
|
|
586
|
+
* Raises std::invalid_argument if this is not an IPv4-mapped IPv6 address.
|
|
587
|
+
*
|
|
588
|
+
* @note SocketAddress::tryConvertToIPv4 is no-throw variant of this function
|
|
589
|
+
*/
|
|
590
|
+
void convertToIPv4();
|
|
591
|
+
|
|
592
|
+
/**
|
|
593
|
+
* Try to convert an address to IPv4.
|
|
594
|
+
*
|
|
595
|
+
* This attempts to convert an address to an IPv4 address if possible.
|
|
596
|
+
* If the address is an IPv4-mapped IPv6 address, it is converted to an IPv4
|
|
597
|
+
* address and true is returned. Otherwise nothing is done, and false is
|
|
598
|
+
* returned.
|
|
599
|
+
*
|
|
600
|
+
* @return true if the address was converted to IPv4-mapped address, false
|
|
601
|
+
* otherwise
|
|
602
|
+
*/
|
|
603
|
+
bool tryConvertToIPv4();
|
|
604
|
+
|
|
605
|
+
/**
|
|
606
|
+
* Convert an IPv4 address to IPv6 [::ffff:a.b.c.d]
|
|
607
|
+
*
|
|
608
|
+
* @return true if the address conversion was done, false otherwise
|
|
609
|
+
*/
|
|
610
|
+
bool mapToIPv6();
|
|
611
|
+
|
|
612
|
+
/**
|
|
613
|
+
* Get string representation of the host name (or IP address if the host name
|
|
614
|
+
* cannot be resolved).
|
|
615
|
+
*
|
|
616
|
+
* Warning: Using this method is strongly discouraged. It performs a
|
|
617
|
+
* DNS lookup, which may block for many seconds.
|
|
618
|
+
*
|
|
619
|
+
* Raises std::invalid_argument if an error occurs.
|
|
620
|
+
*
|
|
621
|
+
* @return Host name (or IP address)
|
|
622
|
+
*/
|
|
623
|
+
std::string getHostStr() const;
|
|
624
|
+
|
|
625
|
+
/**
|
|
626
|
+
* Get the path name for a Unix domain socket.
|
|
627
|
+
*
|
|
628
|
+
* Returns a std::string containing the path. For anonymous sockets, an
|
|
629
|
+
* empty string is returned.
|
|
630
|
+
*
|
|
631
|
+
* For addresses in the abstract namespace (Linux-specific), a std::string
|
|
632
|
+
* containing binary data is returned. In this case the first character will
|
|
633
|
+
* always be a NUL character.
|
|
634
|
+
*
|
|
635
|
+
* Raises std::invalid_argument if called on a non-Unix domain socket.
|
|
636
|
+
*
|
|
637
|
+
* @return Path name for a Unix domain socket
|
|
638
|
+
*/
|
|
639
|
+
std::string getPath() const;
|
|
640
|
+
|
|
641
|
+
/**
|
|
642
|
+
* Get human-readable string representation of the address.
|
|
643
|
+
*
|
|
644
|
+
* This prints a string representation of the address, for human consumption.
|
|
645
|
+
* For IP addresses, the string is of the form "<IP>:<port>".
|
|
646
|
+
*
|
|
647
|
+
* @return Human-readable representation of the address
|
|
648
|
+
*/
|
|
649
|
+
std::string describe() const;
|
|
650
|
+
|
|
651
|
+
bool operator==(const SocketAddress& other) const;
|
|
652
|
+
bool operator!=(const SocketAddress& other) const {
|
|
653
|
+
return !(*this == other);
|
|
654
|
+
}
|
|
655
|
+
|
|
656
|
+
/**
|
|
657
|
+
* Check whether the first N bits of this address match the first N
|
|
658
|
+
* bits of another address.
|
|
659
|
+
*
|
|
660
|
+
* @note returns false if the addresses are not from the same
|
|
661
|
+
* address family or if the family is neither IPv4 nor IPv6
|
|
662
|
+
*
|
|
663
|
+
* @param other The address to match against
|
|
664
|
+
* @param prefixLength Length of the prefix to match
|
|
665
|
+
* @return true if `prefixLength` this address matches with `other`,
|
|
666
|
+
* false otherwise
|
|
667
|
+
*/
|
|
668
|
+
bool prefixMatch(const SocketAddress& other, unsigned prefixLength) const;
|
|
669
|
+
|
|
670
|
+
/**
|
|
671
|
+
* Use this operator for storing maps based on SocketAddress.
|
|
672
|
+
*/
|
|
673
|
+
bool operator<(const SocketAddress& other) const;
|
|
674
|
+
|
|
675
|
+
/**
|
|
676
|
+
* Compuate a hash of a SocketAddress.
|
|
677
|
+
*
|
|
678
|
+
* @return Hash for this SocketAddress
|
|
679
|
+
*/
|
|
680
|
+
size_t hash() const;
|
|
681
|
+
|
|
682
|
+
private:
|
|
683
|
+
/**
|
|
684
|
+
* Unix socket addresses require more storage than IPv4 and IPv6 addresses,
|
|
685
|
+
* and are comparatively little-used.
|
|
686
|
+
*
|
|
687
|
+
* Therefore SocketAddress' internal storage_ member variable doesn't
|
|
688
|
+
* contain room for a full unix address, to avoid wasting space in the common
|
|
689
|
+
* case. When we do need to store a Unix socket address, we use this
|
|
690
|
+
* ExternalUnixAddr structure to allocate a struct sockaddr_un separately on
|
|
691
|
+
* the heap.
|
|
692
|
+
*/
|
|
693
|
+
struct ExternalUnixAddr {
|
|
694
|
+
struct sockaddr_un* addr;
|
|
695
|
+
socklen_t len;
|
|
696
|
+
|
|
697
|
+
socklen_t pathLength() const {
|
|
698
|
+
return socklen_t(len - offsetof(struct sockaddr_un, sun_path));
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
void init() {
|
|
702
|
+
addr = new struct sockaddr_un;
|
|
703
|
+
addr->sun_family = AF_UNIX;
|
|
704
|
+
len = 0;
|
|
705
|
+
}
|
|
706
|
+
void init(const ExternalUnixAddr& other) {
|
|
707
|
+
addr = new struct sockaddr_un;
|
|
708
|
+
len = other.len;
|
|
709
|
+
memcpy(addr, other.addr, size_t(len));
|
|
710
|
+
}
|
|
711
|
+
void copy(const ExternalUnixAddr& other) {
|
|
712
|
+
len = other.len;
|
|
713
|
+
memcpy(addr, other.addr, size_t(len));
|
|
714
|
+
}
|
|
715
|
+
void free() { delete addr; }
|
|
716
|
+
};
|
|
717
|
+
|
|
718
|
+
struct addrinfo* getAddrInfo(const char* host, uint16_t port, int flags);
|
|
719
|
+
struct addrinfo* getAddrInfo(const char* host, const char* port, int flags);
|
|
720
|
+
void setFromAddrInfo(const struct addrinfo* info);
|
|
721
|
+
void setFromLocalAddr(const struct addrinfo* info);
|
|
722
|
+
void setFromSocket(
|
|
723
|
+
NetworkSocket socket,
|
|
724
|
+
int (*fn)(NetworkSocket, struct sockaddr*, socklen_t*));
|
|
725
|
+
std::string getIpString(int flags) const;
|
|
726
|
+
void getIpString(char* buf, size_t buflen, int flags) const;
|
|
727
|
+
|
|
728
|
+
void updateUnixAddressLength(socklen_t addrlen);
|
|
729
|
+
|
|
730
|
+
/*
|
|
731
|
+
* storage_ contains room for a full IPv4 or IPv6 address, so they can be
|
|
732
|
+
* stored inline without a separate allocation on the heap.
|
|
733
|
+
*
|
|
734
|
+
* If we need to store a Unix socket address, ExternalUnixAddr is a shim to
|
|
735
|
+
* track a struct sockaddr_un allocated separately on the heap.
|
|
736
|
+
*/
|
|
737
|
+
union AddrStorage {
|
|
738
|
+
folly::IPAddress addr;
|
|
739
|
+
ExternalUnixAddr un;
|
|
740
|
+
AddrStorage() : addr() {}
|
|
741
|
+
} storage_{};
|
|
742
|
+
// IPAddress class does nto save zone or port, and must be saved here
|
|
743
|
+
uint16_t port_{0};
|
|
744
|
+
|
|
745
|
+
bool external_{false};
|
|
746
|
+
};
|
|
747
|
+
|
|
748
|
+
/**
|
|
749
|
+
* Hash a SocketAddress object.
|
|
750
|
+
*
|
|
751
|
+
* boost::hash uses hash_value(), so this allows boost::hash to automatically
|
|
752
|
+
* work for SocketAddress.
|
|
753
|
+
*/
|
|
754
|
+
size_t hash_value(const SocketAddress& address);
|
|
755
|
+
|
|
756
|
+
std::ostream& operator<<(std::ostream& os, const SocketAddress& addr);
|
|
757
|
+
} // namespace folly
|
|
758
|
+
|
|
759
|
+
namespace std {
|
|
760
|
+
|
|
761
|
+
// Provide an implementation for std::hash<SocketAddress>
|
|
762
|
+
template <>
|
|
763
|
+
struct hash<folly::SocketAddress> {
|
|
764
|
+
size_t operator()(const folly::SocketAddress& addr) const {
|
|
765
|
+
return addr.hash();
|
|
766
|
+
}
|
|
767
|
+
};
|
|
768
|
+
} // namespace std
|