Skip to content

Commit

Permalink
Oops, only broadcast on one port
Browse files Browse the repository at this point in the history
  • Loading branch information
Jonathan del Strother authored and Jonathan del Strother committed Sep 10, 2009
1 parent 59e94ac commit 322a37d
Showing 1 changed file with 13 additions and 5 deletions.
18 changes: 13 additions & 5 deletions BBOSCManager.m
Expand Up @@ -8,21 +8,29 @@


#import "BBOSCManager.h" #import "BBOSCManager.h"
#import "OSCExtensions.h" #import "OSCExtensions.h"
#import "NSArrayExtensions.h"


@interface BBOSCBroadcastPort : NSObject { @interface BBOSCBroadcastPort : NSObject {
OSCManager* oscManager; OSCManager* oscManager;
int port;
} }
-(id)initWithManager:(OSCManager*)manager; -(id)initWithManager:(OSCManager*)manager atPort:(int)p;
@end @end
@implementation BBOSCBroadcastPort @implementation BBOSCBroadcastPort
-(id)initWithManager:(OSCManager*)manager { -(id)initWithManager:(OSCManager*)manager atPort:(int)p {
if (self = [super init]) { if (self = [super init]) {
oscManager = manager; oscManager = manager;
port = p;
} }
return self; return self;
} }
-(void)sendThisMessage:(OSCMessage*)message { -(void)sendThisMessage:(OSCMessage*)message {
[[oscManager outPortArray] makeObjectsPerformSelector:@selector(sendThisMessage:) withObject:message]; // Broadcast to all discovered outPorts with the same port number as us.
[[oscManager outPortArray] rdlock];
NSArray* suitablePorts = [[[oscManager outPortArray] array] select:^BOOL(OSCOutPort* oscPort){return (oscPort.port == port);}];
[[oscManager outPortArray] unlock];
[suitablePorts makeObjectsPerformSelector:@selector(sendThisMessage:) withObject:message];

} }
@end @end


Expand Down Expand Up @@ -66,7 +74,7 @@ - (OSCInPort *) createNewInputForPort:(int)p withLabel:(NSString *)l {
} }
- (OSCOutPort *) createNewOutputToAddress:(NSString *)a atPort:(int)p withLabel:(NSString *)l { - (OSCOutPort *) createNewOutputToAddress:(NSString *)a atPort:(int)p withLabel:(NSString *)l {
if ([a isEqualToString:@"0.0.0.0"]) // Broadcast to everyone if ([a isEqualToString:@"0.0.0.0"]) // Broadcast to everyone
return [[[BBOSCBroadcastPort alloc] initWithManager:oscManager] autorelease]; return [[[BBOSCBroadcastPort alloc] initWithManager:oscManager atPort:p] autorelease];
return [oscManager createNewOutputToAddress:a atPort:p withLabel:l]; return [oscManager createNewOutputToAddress:a atPort:p withLabel:l];
} }
- (void) removeInput:(id)p { - (void) removeInput:(id)p {
Expand Down

0 comments on commit 322a37d

Please sign in to comment.