Skip to content

Commit

Permalink
ARC compatibility fixes for GCDAsyncUdpSocket
Browse files Browse the repository at this point in the history
  • Loading branch information
robbiehanson committed Apr 5, 2012
1 parent 42cfdc7 commit 2893a2c
Showing 1 changed file with 11 additions and 14 deletions.
25 changes: 11 additions & 14 deletions GCD/GCDAsyncUdpSocket.m
Expand Up @@ -4270,7 +4270,7 @@ + (void)removeStreamListener:(GCDAsyncUdpSocket *)asyncUdpSocket
static void CFReadStreamCallback(CFReadStreamRef stream, CFStreamEventType type, void *pInfo)
{
@autoreleasepool {
GCDAsyncUdpSocket *asyncUdpSocket = [(GCDAsyncUdpSocket *)pInfo retain];
GCDAsyncUdpSocket *asyncUdpSocket = (__bridge GCDAsyncUdpSocket *)pInfo;

switch(type)
{
Expand All @@ -4287,10 +4287,10 @@ static void CFReadStreamCallback(CFReadStreamRef stream, CFStreamEventType type,
case kCFStreamEventErrorOccurred:
case kCFStreamEventEndEncountered:
{
NSError *error = NSMakeCollectable(CFReadStreamCopyError(stream));
NSError *error = (__bridge_transfer NSError *)CFReadStreamCopyError(stream);
if (error == nil && type == kCFStreamEventEndEncountered)
{
error = [[asyncUdpSocket socketClosedError] retain];
error = [asyncUdpSocket socketClosedError];
}

dispatch_async(asyncUdpSocket->socketQueue, ^{ @autoreleasepool {
Expand All @@ -4309,23 +4309,20 @@ static void CFReadStreamCallback(CFReadStreamRef stream, CFStreamEventType type,

}});

[error release];
break;
}
default:
{
LogCError(@"CFReadStreamCallback - UnknownType: %i", (int)type);
}
}

[asyncUdpSocket release];
}
}

static void CFWriteStreamCallback(CFWriteStreamRef stream, CFStreamEventType type, void *pInfo)
{
@autoreleasepool {
GCDAsyncUdpSocket *asyncUdpSocket = [(GCDAsyncUdpSocket *)pInfo retain];
GCDAsyncUdpSocket *asyncUdpSocket = (__bridge GCDAsyncUdpSocket *)pInfo;

switch(type)
{
Expand All @@ -4342,10 +4339,10 @@ static void CFWriteStreamCallback(CFWriteStreamRef stream, CFStreamEventType typ
case kCFStreamEventErrorOccurred:
case kCFStreamEventEndEncountered:
{
NSError *error = NSMakeCollectable(CFWriteStreamCopyError(stream));
NSError *error = (__bridge_transfer NSError *)CFWriteStreamCopyError(stream);
if (error == nil && type == kCFStreamEventEndEncountered)
{
error = [[asyncUdpSocket socketClosedError] retain];
error = [asyncUdpSocket socketClosedError];
}

dispatch_async(asyncUdpSocket->socketQueue, ^{ @autoreleasepool {
Expand All @@ -4364,16 +4361,13 @@ static void CFWriteStreamCallback(CFWriteStreamRef stream, CFStreamEventType typ

}});

[error release];
break;
}
default:
{
LogCError(@"CFWriteStreamCallback - UnknownType: %i", (int)type);
}
}

[asyncUdpSocket release];
}
}

Expand Down Expand Up @@ -4472,7 +4466,7 @@ - (BOOL)registerForStreamCallbacks:(NSError **)errPtr
NSError *err = nil;

streamContext.version = 0;
streamContext.info = self;
streamContext.info = (__bridge void *)self;
streamContext.retain = nil;
streamContext.release = nil;
streamContext.copyDescription = nil;
Expand Down Expand Up @@ -4776,6 +4770,9 @@ - (BOOL)enableBackgroundingOnSockets
return NO;
}

// Why is this commented out?
// See comments below.

// NSError *err = nil;
// if (![self createReadAndWriteStreams:&err])
// {
Expand Down Expand Up @@ -4818,7 +4815,7 @@ - (BOOL)enableBackgroundingOnSockets
//
// One tiny problem: the sockets will still get closed when the app gets backgrounded.
//
// Edit: Actually I forgot to set the voip flag in the Info.plist, so I need to test this again...
// Apple does not officially support backgrounding UDP sockets.

return NO;
}
Expand Down

0 comments on commit 2893a2c

Please sign in to comment.