Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OSCServer with optional Bonjour service and Package.swift #61

Open
wants to merge 72 commits into
base: dev
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
8f5aada
Create Package.swift
soundflix Nov 18, 2021
f77c18e
Update OSCServer.swift
soundflix Nov 18, 2021
c2692f2
Update OSCClient.swift
soundflix Nov 20, 2021
4466177
changed bonjourName to optional type
soundflix Nov 21, 2021
b5aab7c
fix
soundflix Nov 21, 2021
199c5e8
change name type to optional
soundflix Nov 21, 2021
49d8c7c
bonjourName default = nil
soundflix Nov 21, 2021
6bd6f56
compatibility with init
soundflix Nov 21, 2021
5e594f4
Merge remote-tracking branch 'refs/remotes/origin/dev'
soundflix Nov 21, 2021
b622af9
[weak self] in 3x DispatchQueue.main.async
soundflix Nov 21, 2021
da12123
class-only conformance for weak usage
soundflix Nov 21, 2021
3ff6bdb
dirty fix for bundle in bundle (TotalMix crash bug data)
soundflix Nov 21, 2021
90046c6
dirty fix 'type end found nil'
soundflix Nov 21, 2021
bd17a52
Add autoreleasepool to matches functions.
soundflix Nov 21, 2021
5a22299
Update Package.swift
soundflix Dec 11, 2021
b8665a1
changed var host to access level public private(set)
soundflix Dec 12, 2021
06b5741
Update README.md
soundflix Jan 1, 2022
e9c2c57
changed how "running" property is set
soundflix Jan 2, 2022
669404e
change to private(set): public private(set) var running
soundflix Jan 2, 2022
2a87ca9
server fails: attempt 1 restart()
soundflix Jan 2, 2022
c48403c
Access Control: changed 'var connection: NWConnection?' to public.
soundflix Jan 7, 2022
417b8b9
Update OSCServer.swift
soundflix Jan 8, 2022
d3707c3
Update OSCServer.swift
soundflix Jan 8, 2022
c63d9c8
Update OSCServer.swift
soundflix Jan 8, 2022
ec6fbb7
test for Umlaut crash in String.Encoding.utf8
soundflix Jan 20, 2022
c60cb58
fixed guard let with fall through
soundflix Jan 20, 2022
8ae212d
self = "<OSCStringDataError>"
soundflix Jan 20, 2022
0319e84
more verbose
soundflix Jan 20, 2022
e95bae0
typo..
soundflix Jan 20, 2022
f63ce4c
added decoder String.Encoding.windowsCP1252
soundflix Jan 20, 2022
80fe5df
added listener?.serviceRegistrationUpdateHandler
soundflix Feb 10, 2022
18538f6
extended serviceRegistrationUpdateHandler
soundflix Feb 10, 2022
539b04d
OSCClient queue = .main
soundflix Feb 11, 2022
9a172ca
removerd params.includePeerToPeer = true
soundflix Feb 11, 2022
2dea1db
set listener = nil after .cancel()
soundflix Feb 11, 2022
8cab281
removed ServiceRegistrationHandler
soundflix Feb 11, 2022
0098fc7
changed back to custom DispatchQueue
soundflix Feb 11, 2022
bbaa429
changed stop() to not set listener = nil (it also deletes delegate as…
soundflix Apr 9, 2022
9b31325
extended NSLog with server name
soundflix Apr 9, 2022
c44c972
fixed name
soundflix Apr 9, 2022
55d40ad
fix name
soundflix Apr 9, 2022
414d34a
strongify self
soundflix Apr 9, 2022
c38cc85
fix guard expression
soundflix Apr 9, 2022
2672152
changed handler to strongSelf & no optional chaining
soundflix Apr 9, 2022
bbca0a6
fix force unwrap
soundflix Apr 9, 2022
cf325ac
fixed optional server name
soundflix Apr 9, 2022
bb4e054
Update OSCServer.swift
soundflix Apr 9, 2022
40589ef
unwrap port value, delegate
soundflix Apr 9, 2022
98ddc83
Update OSCServer.swift
soundflix Apr 9, 2022
c7c2073
added stateUpdateHandler log messages
soundflix Apr 9, 2022
d21af27
"*** dirty fix 'type end found nil' *** " returns custom message
soundflix Apr 10, 2022
e9dbe87
Update OSCServer.swift
soundflix Apr 10, 2022
681076a
Update OSCServer.swift
soundflix Apr 10, 2022
410936d
Update OSCServer.swift
soundflix Apr 10, 2022
1386069
Update OSCServer.swift
soundflix Apr 10, 2022
a1d9429
Update OSCServer.swift
soundflix Apr 10, 2022
dc90771
Update OSCServer.swift
soundflix Apr 10, 2022
8426674
Update OSCServer.swift
soundflix Apr 10, 2022
f2dd564
Update OSCServer.swift
soundflix Apr 10, 2022
2ebc88d
Update OSCServer.swift
soundflix Apr 10, 2022
bce526a
Update OSCServer.swift
soundflix Apr 10, 2022
aeed959
Update OSCServer.swift
soundflix Apr 10, 2022
9ed5998
Update OSCServer.swift
soundflix Apr 10, 2022
0c59401
Update OSCServer.swift
soundflix Apr 10, 2022
0f964cb
Update OSCServer.swift
soundflix Apr 10, 2022
89b5c73
changed OSCServer.connection to public
soundflix Apr 27, 2022
939a80f
fixed port range check
soundflix Apr 29, 2022
2a30d68
Fixed port range check
soundflix Apr 29, 2022
ca6f1d2
Update OSCClient.swift
soundflix Apr 29, 2022
434e52c
Update OSCServer.swift
soundflix Apr 29, 2022
9b8d239
deleted 'ready' property, please rely on ...connection.stateUpdateHan…
soundflix May 1, 2022
e7ca572
Dev team changed
soundflix Aug 29, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions Examples/iOS/OSCTest/OSCTest.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -316,7 +316,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = M4VH59A389;
DEVELOPMENT_TEAM = FNLF39495D;
INFOPLIST_FILE = "$(SRCROOT)/OSCTest/Info.plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
Expand All @@ -334,7 +334,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = M4VH59A389;
DEVELOPMENT_TEAM = FNLF39495D;
INFOPLIST_FILE = "$(SRCROOT)/OSCTest/Info.plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
Expand Down
10 changes: 8 additions & 2 deletions Examples/macOS/OSCMonitor/OSCMonitor.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,8 @@
dependencies = (
);
name = OSCMonitor;
packageProductDependencies = (
);
productName = OSCMonitor;
productReference = 033827B21D3999590065A3A7 /* OSCMonitor.app */;
productType = "com.apple.product-type.application";
Expand All @@ -124,7 +126,7 @@
TargetAttributes = {
033827B11D3999590065A3A7 = {
CreatedOnToolsVersion = 8.0;
DevelopmentTeam = 638F7EDPVY;
DevelopmentTeam = FNLF39495D;
DevelopmentTeamName = "Devin Roth (Personal Team)";
LastSwiftMigration = 0910;
ProvisioningStyle = Automatic;
Expand All @@ -133,13 +135,15 @@
};
buildConfigurationList = 033827AD1D3999590065A3A7 /* Build configuration list for PBXProject "OSCMonitor" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 033827A91D3999590065A3A7;
packageReferences = (
);
productRefGroup = 033827B31D3999590065A3A7 /* Products */;
projectDirPath = "";
projectRoot = "";
Expand Down Expand Up @@ -298,6 +302,7 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = FNLF39495D;
INFOPLIST_FILE = OSCMonitor/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.14;
Expand All @@ -314,6 +319,7 @@
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
COMBINE_HIDPI_IMAGES = YES;
DEVELOPMENT_TEAM = FNLF39495D;
INFOPLIST_FILE = OSCMonitor/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks";
MACOSX_DEPLOYMENT_TARGET = 10.14;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>
20 changes: 12 additions & 8 deletions Framework/SwiftOSC/Addresses/OSCAddressPattern.swift
Original file line number Diff line number Diff line change
Expand Up @@ -180,20 +180,24 @@ public struct OSCAddressPattern {

// Returns True if the address matches the address pattern.
public func matches(_ address: OSCAddress)->Bool{
if address.string.range(of: self.regex, options: .regularExpression) == nil {
return false
} else {
return true
var maches = true
autoreleasepool {
if address.string.range(of: self.regex, options: .regularExpression) == nil {
maches = false
}
}
return maches
}

// Returns True if the address is along the path of the address pattern
public func matches(path: OSCAddress)->Bool{
if path.string.range(of: self.regexPath, options: .regularExpression) == nil {
return false
} else {
return true
var maches = true
autoreleasepool {
if path.string.range(of: self.regexPath, options: .regularExpression) == nil {
maches = false
}
}
return maches
}
}

43 changes: 24 additions & 19 deletions Framework/SwiftOSC/Network/OSCClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,39 +10,39 @@ import Foundation
import Network

public class OSCClient {
var connection: NWConnection?

public var connection: NWConnection? // Access Control: changed 'var connection: NWConnection?' to public.
var queue: DispatchQueue
var host: NWEndpoint.Host
var port: NWEndpoint.Port

public private(set) var host: NWEndpoint.Host
public private(set) var port: NWEndpoint.Port

public init?(host: String, port: Int) {

// check if string is empty
if host == "" {

NSLog("Invalid Hostname: No empty strings allowed.")
return nil

}
if port > 65535 && port >= 0{
if port > 65535 || port <= 0 {
NSLog("Invalid Port: Out of range.")
return nil
}

self.host = NWEndpoint.Host(host)
self.port = NWEndpoint.Port(integerLiteral: UInt16(port))

queue = DispatchQueue(label: "SwiftOSC Client")
setupConnection()
}

func setupConnection(){

// create the connection
connection = NWConnection(host: host, port: port, using: .udp)

// setup state update handler
connection?.stateUpdateHandler = { [weak self] (newState) in
switch newState {
Expand All @@ -53,22 +53,27 @@ public class OSCClient {
NSLog("SWiftOSC Client is restarting.")
self?.setupConnection()
case .cancelled:
NSLog("SWiftOSC Client cancelled.")
break
case .waiting(let error):
NSLog("SwiftOSC Client waiting with error \(error)")
case .preparing:
NSLog("SWiftOSC Client is preparing.")
break
case .setup:
NSLog("SWiftOSC Client is setting up.")
break
@unknown default:
fatalError()
}
}

// start the connection
connection?.start(queue: queue)
}

public func send(_ element: OSCElement){

let data = element.oscData
connection?.send(content: data, completion: .contentProcessed({ (error) in
if let error = error {
Expand All @@ -80,7 +85,7 @@ public class OSCClient {
// destroy connection and listener
connection?.forceCancel()


// setup new listener
setupConnection()
}
Expand Down
2 changes: 1 addition & 1 deletion Framework/SwiftOSC/Network/OSCDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

import Foundation

public protocol OSCDelegate {
public protocol OSCDelegate: AnyObject {
func didReceive(_ data: Data)
func didReceive(_ bundle: OSCBundle)
func didReceive(_ message: OSCMessage)
Expand Down
Loading