Skip to content

Commit

Permalink
Merge branch 'swift4'
Browse files Browse the repository at this point in the history
  • Loading branch information
Gunter Hager committed Sep 18, 2017
2 parents be81edb + 8a05dc4 commit cfba164
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 16 deletions.
30 changes: 23 additions & 7 deletions UDPBroadcast.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -181,18 +181,18 @@
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0720;
LastUpgradeCheck = 0810;
LastUpgradeCheck = 0900;
ORGANIZATIONNAME = "Gunter Hager";
TargetAttributes = {
BC87C7611C6B443A00B940F5 = {
CreatedOnToolsVersion = 7.2;
LastSwiftMigration = 0810;
LastSwiftMigration = 0900;
ProvisioningStyle = Manual;
};
BC87C7701C6B448A00B940F5 = {
CreatedOnToolsVersion = 7.2;
DevelopmentTeam = 49Y4WR525P;
LastSwiftMigration = 0810;
LastSwiftMigration = 0900;
};
};
};
Expand Down Expand Up @@ -292,14 +292,20 @@
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
Expand Down Expand Up @@ -342,14 +348,20 @@
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
Expand Down Expand Up @@ -396,7 +408,8 @@
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = Off;
SWIFT_VERSION = 4.0;
};
name = Debug;
};
Expand All @@ -417,7 +430,8 @@
PRODUCT_BUNDLE_IDENTIFIER = name.gunterhager.UDPBroadcast;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = Off;
SWIFT_VERSION = 4.0;
};
name = Release;
};
Expand All @@ -431,7 +445,8 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = name.gunterhager.UDPBroadcastExample;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = Off;
SWIFT_VERSION = 4.0;
};
name = Debug;
};
Expand All @@ -445,7 +460,8 @@
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = name.gunterhager.UDPBroadcastExample;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 3.0;
SWIFT_SWIFT3_OBJC_INFERENCE = Off;
SWIFT_VERSION = 4.0;
};
name = Release;
};
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0810"
LastUpgradeVersion = "0900"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
Expand All @@ -26,6 +26,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
Expand All @@ -36,6 +37,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0810"
LastUpgradeVersion = "0900"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
Expand All @@ -26,6 +26,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
Expand All @@ -45,6 +46,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
language = ""
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
Expand Down
18 changes: 14 additions & 4 deletions UDPBroadcast/UDPBroadcastConnection.swift
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,14 @@ open class UDPBroadcastConnection {
*/
open func sendBroadcast(_ message: String) {

guard let data = message.data(using: .utf8) else { return }
sendBroadcast(data)
}

/// Send broadcast data.
///
/// - Parameter data: Data to send via broadcast.
open func sendBroadcast(_ data: Data) {
if responseSource == nil {
guard createSocket() else {
print("UDP ServerConnection initialization failed.")
Expand All @@ -156,10 +164,12 @@ open class UDPBroadcastConnection {

guard let source = responseSource else { return }
let UDPSocket = Int32(source.handle)
message.withCString { broadcastMessage in
let broadcastMessageLength = Int(strlen(broadcastMessage) + 1) // We need to include the 0 byte to terminate the C-String
let sent = withUnsafePointer(to: &address) {
sendto(UDPSocket, broadcastMessage, broadcastMessageLength, 0, UnsafeRawPointer($0).bindMemory(to: sockaddr.self, capacity: 1), socklen_t(address.sin_len))
let socketLength = socklen_t(address.sin_len)
data.withUnsafeBytes { (broadcastMessage: UnsafePointer<Int8>) in
let broadcastMessageLength = data.count
let sent = withUnsafeMutablePointer(to: &address) { pointer -> Int in
let memory = UnsafeRawPointer(pointer).bindMemory(to: sockaddr.self, capacity: 1)
return sendto(UDPSocket, broadcastMessage, broadcastMessageLength, 0, memory, socketLength)
}

guard sent > 0 else {
Expand Down
6 changes: 3 additions & 3 deletions UDPBroadcastExample/ViewController.swift
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

broadcastConnection = UDPBroadcastConnection(port: Config.Ports.broadcast) { [unowned self] (response: (ipAddress: String, port: Int, response: [UInt8])) -> Void in
let log = "Received from \(response.ipAddress):\(response.port):\n\n\(response.response)"
broadcastConnection = UDPBroadcastConnection(port: Config.Ports.broadcast) { [unowned self] (ipAddress: String, port: Int, response: [UInt8]) -> Void in
let log = "Received from \(ipAddress):\(port):\n\n\(response)"
self.logView.text = log
}
}
Expand Down

0 comments on commit cfba164

Please sign in to comment.