Files
swift-mirror/stdlib/public/Darwin/Network/NWProtocolUDP.swift
Mike Ash fa5888fb3f [Stdlib][Overlays] Rename various classes to avoid conflicting ObjC names.
Old Swift and new Swift runtimes and overlays need to coexist in the same process. This means there must not be any classes which have the same ObjC runtime name in old and new, because the ObjC runtime doesn't like name collisions.

When possible without breaking source compatibility, classes were renamed in Swift, which results in a different ObjC name.

Public classes were renamed only on the ObjC side using the @_objcRuntimeName attribute.

This is similar to the work done in pull request #19295. That only renamed @objc classes. This renames all of the others, since even pure Swift classes still get an ObjC name.

rdar://problem/46646438
2019-01-15 12:21:20 -05:00

67 lines
2.2 KiB
Swift

//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2018 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
// NOTE: older overlays had Network.NWProtocolUDP as the ObjC name.
// The two must coexist, so it was renamed. The old name must not be
// used in the new runtime. _TtC7Network14_NWProtocolUDP is the
// mangled name for Network._NWProtocolUDP.
@_objcRuntimeName(_TtC7Network14_NWProtocolUDP)
@available(macOS 10.14, iOS 12.0, watchOS 5.0, tvOS 12.0, *)
public class NWProtocolUDP : NWProtocol {
public static let definition: NWProtocolDefinition = {
NWProtocolDefinition(nw_protocol_copy_udp_definition(), "udp")
}()
// Set the ObjC name of this class to be nested in the customized ObjC
// name of NWProtocolUDP.
@_objcRuntimeName(_TtCC7Network14_NWProtocolUDP7Options)
public class Options : NWProtocolOptions {
private var _preferNoChecksum: Bool = false
/// Configure UDP to skip computing checksums when sending.
/// This will only take effect when running over IPv4 (UDP_NOCKSUM).
public var preferNoChecksum: Bool {
set {
self._preferNoChecksum = newValue
nw_udp_options_set_prefer_no_checksum(self.nw, newValue)
}
get {
return self._preferNoChecksum
}
}
/// Create UDP options to set in an NWParameters.ProtocolStack
public init() {
super.init(nw_udp_create_options())
}
override internal init(_ nw: nw_protocol_options_t) {
super.init(nw)
}
}
// Set the ObjC name of this class to be nested in the customized ObjC
// name of NWProtocolUDP.
@_objcRuntimeName(_TtCC7Network14_NWProtocolUDP8Metadata)
public class Metadata: NWProtocolMetadata {
override internal init(_ nw: nw_protocol_metadata_t) {
super.init(nw)
}
/// Create an empty UDP metadata to send with ContentContext
public init() {
super.init(nw_udp_create_metadata())
}
}
}