Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
ac64504
Convert to ARC & GCD sockets (working for bound UDP)
joshchngs Jan 20, 2013
814b70d
Add lazily-parsed OSCMessage
joshchngs Jan 21, 2013
5b07b14
Make OSCDispatcher optional in OSCConnection
joshchngs Jan 21, 2013
9d671d7
Tidy up OSCConnectionDelegate's dispatch_queue_t
joshchngs Jan 22, 2013
e65e5cf
Serialise accesses to OSCConnection's pendingPackets on one queue
joshchngs Jan 22, 2013
1c403d2
Add -[OSCMessage isEqual:] for other OSCMessages
joshchngs Jan 22, 2013
7d6a940
Fix -[OSCMessage lengthOfArgumentAtIndex:] for strings
joshchngs Jan 23, 2013
a7cb4e9
Implement OSCMessage.arguments for more basic types
joshchngs Jan 23, 2013
b36a617
Block -[OSCConnection disconnect…] when clearing packet queue
joshchngs Jan 23, 2013
51cbdd0
Fix -[OSCMessage addressLength]
joshchngs Feb 13, 2013
85a8d9b
Fix release build architecture setting
joshchngs Feb 15, 2013
7591ec3
Use correct GCDAsyncSocket methods in connectToHost:
joshchngs Feb 15, 2013
51ee674
Fix unguarded use of -[OSCConnectionDelegate queue]
joshchngs Feb 22, 2013
6865665
Catch & log truncated bundles before NSData crashes
joshchngs Feb 26, 2013
1e4f1ff
Set udpSocket's maxReceiveIPv4BufferSize to UDP limit
joshchngs Feb 26, 2013
b66cc84
Tell OSCConnection's udpSocket to close on disconnect
joshchngs Feb 28, 2013
f8190a4
Add oscConnection:shouldReceivePacketWithData:fromHost:port:
joshchngs Feb 28, 2013
17ada60
Don't assert a bound connection in sendPacket:toHost:port:
joshchngs Mar 14, 2013
c889560
Swap blob argument size to native byte order
joshchngs May 1, 2013
1e2287e
Fix double free for blobs in [OSCMessage arguments]
joshchngs May 1, 2013
7dcd4ff
Pull in GCDAsyncSocket with dispatch_get_current_queue() fixes
joshchngs Aug 7, 2013
398ca60
Ignore build output generated by xcodebuild/xctool
joshchngs Sep 3, 2013
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
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@
.svn
*.xcuserdatad
*.mode1v3
*.pbxuser
*.pbxuser
build
49 changes: 20 additions & 29 deletions CocoaOSC.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@
objects = {

/* Begin PBXBuildFile section */
039D2DC916A9FE9000BDF0CE /* GCDAsyncSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 039D2DC516A9FE9000BDF0CE /* GCDAsyncSocket.h */; };
039D2DCA16A9FE9000BDF0CE /* GCDAsyncSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 039D2DC616A9FE9000BDF0CE /* GCDAsyncSocket.m */; };
039D2DCB16A9FE9000BDF0CE /* GCDAsyncUdpSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 039D2DC716A9FE9000BDF0CE /* GCDAsyncUdpSocket.h */; };
039D2DCC16A9FE9000BDF0CE /* GCDAsyncUdpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 039D2DC816A9FE9000BDF0CE /* GCDAsyncUdpSocket.m */; };
0B4C46861460E8B9007B5E06 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0B4C46851460E8B9007B5E06 /* Cocoa.framework */; };
0B4C46901460E8B9007B5E06 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 0B4C468E1460E8B9007B5E06 /* InfoPlist.strings */; };
0B4C46C81460EAAF007B5E06 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0B4C46C71460EAAF007B5E06 /* UIKit.framework */; };
Expand Down Expand Up @@ -55,15 +59,7 @@
0B5068E71460E46500BD27ED /* OSCPacket.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B5068DD1460E46500BD27ED /* OSCPacket.h */; };
0B5068E81460E46500BD27ED /* OSCPacket.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B5068DE1460E46500BD27ED /* OSCPacket.m */; };
0B50693E1460E4BC00BD27ED /* RegexKitLite.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B50691D1460E4BC00BD27ED /* RegexKitLite.h */; };
0B50693F1460E4BC00BD27ED /* RegexKitLite.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B50691F1460E4BC00BD27ED /* RegexKitLite.m */; };
0BFFAAD215F42EC50051E00F /* AsyncSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BFFAACE15F42EC50051E00F /* AsyncSocket.h */; };
0BFFAAD315F42EC50051E00F /* AsyncSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BFFAACF15F42EC50051E00F /* AsyncSocket.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
0BFFAAD415F42EC50051E00F /* AsyncUdpSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BFFAAD015F42EC50051E00F /* AsyncUdpSocket.h */; };
0BFFAAD515F42EC50051E00F /* AsyncUdpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BFFAAD115F42EC50051E00F /* AsyncUdpSocket.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
0BFFAAD615F42EEE0051E00F /* AsyncSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BFFAACE15F42EC50051E00F /* AsyncSocket.h */; };
0BFFAAD715F42EF20051E00F /* AsyncSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BFFAACF15F42EC50051E00F /* AsyncSocket.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
0BFFAAD815F42EF40051E00F /* AsyncUdpSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BFFAAD015F42EC50051E00F /* AsyncUdpSocket.h */; };
0BFFAAD915F42EF70051E00F /* AsyncUdpSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BFFAAD115F42EC50051E00F /* AsyncUdpSocket.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
0B50693F1460E4BC00BD27ED /* RegexKitLite.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B50691F1460E4BC00BD27ED /* RegexKitLite.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
Expand Down Expand Up @@ -97,6 +93,10 @@
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXFileReference section */
039D2DC516A9FE9000BDF0CE /* GCDAsyncSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GCDAsyncSocket.h; path = CocoaAsyncSocket/GCD/GCDAsyncSocket.h; sourceTree = "<group>"; };
039D2DC616A9FE9000BDF0CE /* GCDAsyncSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GCDAsyncSocket.m; path = CocoaAsyncSocket/GCD/GCDAsyncSocket.m; sourceTree = "<group>"; };
039D2DC716A9FE9000BDF0CE /* GCDAsyncUdpSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = GCDAsyncUdpSocket.h; path = CocoaAsyncSocket/GCD/GCDAsyncUdpSocket.h; sourceTree = "<group>"; };
039D2DC816A9FE9000BDF0CE /* GCDAsyncUdpSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = GCDAsyncUdpSocket.m; path = CocoaAsyncSocket/GCD/GCDAsyncUdpSocket.m; sourceTree = "<group>"; };
0B4C46841460E8B9007B5E06 /* CocoaOSC.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = CocoaOSC.framework; sourceTree = BUILT_PRODUCTS_DIR; };
0B4C46851460E8B9007B5E06 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = Library/Frameworks/Cocoa.framework; sourceTree = DEVELOPER_DIR; };
0B4C46881460E8B9007B5E06 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
Expand Down Expand Up @@ -149,10 +149,6 @@
0B50691D1460E4BC00BD27ED /* RegexKitLite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RegexKitLite.h; sourceTree = "<group>"; };
0B50691E1460E4BC00BD27ED /* RegexKitLite.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = RegexKitLite.html; sourceTree = "<group>"; };
0B50691F1460E4BC00BD27ED /* RegexKitLite.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RegexKitLite.m; sourceTree = "<group>"; };
0BFFAACE15F42EC50051E00F /* AsyncSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AsyncSocket.h; path = CocoaAsyncSocket/RunLoop/AsyncSocket.h; sourceTree = "<group>"; };
0BFFAACF15F42EC50051E00F /* AsyncSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AsyncSocket.m; path = CocoaAsyncSocket/RunLoop/AsyncSocket.m; sourceTree = "<group>"; };
0BFFAAD015F42EC50051E00F /* AsyncUdpSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AsyncUdpSocket.h; path = CocoaAsyncSocket/RunLoop/AsyncUdpSocket.h; sourceTree = "<group>"; };
0BFFAAD115F42EC50051E00F /* AsyncUdpSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AsyncUdpSocket.m; path = CocoaAsyncSocket/RunLoop/AsyncUdpSocket.m; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
Expand Down Expand Up @@ -340,10 +336,10 @@
0BFFAACD15F42EB70051E00F /* CocoaAsyncSocket */ = {
isa = PBXGroup;
children = (
0BFFAACE15F42EC50051E00F /* AsyncSocket.h */,
0BFFAACF15F42EC50051E00F /* AsyncSocket.m */,
0BFFAAD015F42EC50051E00F /* AsyncUdpSocket.h */,
0BFFAAD115F42EC50051E00F /* AsyncUdpSocket.m */,
039D2DC516A9FE9000BDF0CE /* GCDAsyncSocket.h */,
039D2DC616A9FE9000BDF0CE /* GCDAsyncSocket.m */,
039D2DC716A9FE9000BDF0CE /* GCDAsyncUdpSocket.h */,
039D2DC816A9FE9000BDF0CE /* GCDAsyncUdpSocket.m */,
);
name = CocoaAsyncSocket;
sourceTree = "<group>";
Expand All @@ -361,8 +357,6 @@
0B4C47131460F4B8007B5E06 /* OSCDispatcher.h in Headers */,
0B4C47151460F4B8007B5E06 /* OSCPacket.h in Headers */,
0B4C471B1460F565007B5E06 /* RegexKitLite.h in Headers */,
0BFFAAD615F42EEE0051E00F /* AsyncSocket.h in Headers */,
0BFFAAD815F42EF40051E00F /* AsyncUdpSocket.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand All @@ -377,8 +371,8 @@
0B5068E51460E46500BD27ED /* OSCDispatcher.h in Headers */,
0B5068E71460E46500BD27ED /* OSCPacket.h in Headers */,
0B50693E1460E4BC00BD27ED /* RegexKitLite.h in Headers */,
0BFFAAD215F42EC50051E00F /* AsyncSocket.h in Headers */,
0BFFAAD415F42EC50051E00F /* AsyncUdpSocket.h in Headers */,
039D2DC916A9FE9000BDF0CE /* GCDAsyncSocket.h in Headers */,
039D2DCB16A9FE9000BDF0CE /* GCDAsyncUdpSocket.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -527,8 +521,6 @@
0B4C47141460F4B8007B5E06 /* OSCDispatcher.m in Sources */,
0B4C47161460F4B8007B5E06 /* OSCPacket.m in Sources */,
0B4C471C1460F565007B5E06 /* RegexKitLite.m in Sources */,
0BFFAAD715F42EF20051E00F /* AsyncSocket.m in Sources */,
0BFFAAD915F42EF70051E00F /* AsyncUdpSocket.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -562,8 +554,8 @@
0B5068E61460E46500BD27ED /* OSCDispatcher.m in Sources */,
0B5068E81460E46500BD27ED /* OSCPacket.m in Sources */,
0B50693F1460E4BC00BD27ED /* RegexKitLite.m in Sources */,
0BFFAAD315F42EC50051E00F /* AsyncSocket.m in Sources */,
0BFFAAD515F42EC50051E00F /* AsyncUdpSocket.m in Sources */,
039D2DCA16A9FE9000BDF0CE /* GCDAsyncSocket.m in Sources */,
039D2DCC16A9FE9000BDF0CE /* GCDAsyncUdpSocket.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -764,6 +756,7 @@
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CLANG_ENABLE_OBJC_ARC = YES;
COPY_PHASE_STRIP = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
Expand All @@ -787,6 +780,7 @@
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
CLANG_ENABLE_OBJC_ARC = YES;
COPY_PHASE_STRIP = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
Expand Down Expand Up @@ -814,10 +808,7 @@
0B5068D41460E41500BD27ED /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = (
armv6,
armv7,
);
ARCHS = "$(ARCHS_STANDARD_32_BIT)";
DSTROOT = /tmp/CocoaOSC.dst;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = "CocoaOSC/CocoaOSC-Prefix.pch";
Expand Down
4 changes: 1 addition & 3 deletions CocoaOSC/NS+OSCAdditions.m
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,6 @@ + (NSDate *)ntpReferenceDate
[components setDay:1];
NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
date = [[calendar dateFromComponents:components] copy];
[components release];
[calendar release];
}
return date;
}
Expand Down Expand Up @@ -55,7 +53,7 @@ @implementation NSString (OSCAdditions)

- (NSData *)oscStringData
{
NSMutableData *data = [[[self dataUsingEncoding:NSASCIIStringEncoding] mutableCopy] autorelease];
NSMutableData *data = [[self dataUsingEncoding:NSASCIIStringEncoding] mutableCopy];

// Add terminating NULL.
[data setLength:[data length]+1];
Expand Down
22 changes: 15 additions & 7 deletions CocoaOSC/OSCConnection.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@
#import <Foundation/Foundation.h>
#import "OSCConnectionDelegate.h"

#import "GCDAsyncSocket.h"
#import "GCDAsyncUdpSocket.h"

@class AsyncSocket;
@class AsyncUdpSocket;
@class OSCPacket;
@class OSCDispatcher;

Expand All @@ -24,14 +24,17 @@ typedef enum {



@interface OSCConnection : NSObject
@interface OSCConnection : NSObject <GCDAsyncSocketDelegate, GCDAsyncUdpSocketDelegate>
{
id<OSCConnectionDelegate> delegate;
__unsafe_unretained id<OSCConnectionDelegate> delegate;
OSCDispatcher *dispatcher;

AsyncSocket *tcpListenSocket;
AsyncSocket *tcpSocket;
AsyncUdpSocket *udpSocket;
GCDAsyncSocket *tcpListenSocket;
GCDAsyncSocket *tcpSocket;
GCDAsyncUdpSocket *udpSocket;

/// Used to serialize accesses to pendingPacketsByTag
dispatch_queue_t pendingPacketsQueue;

OSCConnectionProtocol protocol;

Expand All @@ -51,6 +54,11 @@ typedef enum {
@property (nonatomic, readonly) UInt16 localPort;
@property (nonatomic, readonly) OSCConnectionProtocol protocol;

/**
@param dispatcher can be nil
*/
- (id)initWithDispatcher:(OSCDispatcher *)dispatcher;

// Connect and either accept or bind are mutually exclusive. Don't call one after calling the other.
- (BOOL)connectToHost:(NSString *)host port:(UInt16)port protocol:(OSCConnectionProtocol)protocol error:(NSError **)errPtr;
- (void)disconnect;
Expand Down
Loading