Re: CFNetwork crash!
Re: CFNetwork crash!
- Subject: Re: CFNetwork crash!
- From: Avi Drissman <email@hidden>
- Date: Tue, 16 Jul 2002 15:55:21 -0400
At 10:15 AM -0700 7/16/02, Becky Willrich wrote:
O.k.; then try delaying the release until back out in the run loop
I'll go play with that. I just want to double-check this code that I
use. I think it's correct in retaining/releasing; am I right?
To get a listening socket:
-----
gTCPListenSocketRef = CFSocketCreateWithNative(nil, sock,
kCFSocketAcceptCallBack, netListenerCallback, nil);
source = CFSocketCreateRunLoopSource(nil, gTCPListenSocketRef, 0);
CFRunLoopAddSource(gMainRunLoop, source, kCFRunLoopDefaultMode);
CFRelease(source);
-----
To kill the listening socket:
-----
CFSocketInvalidate(gTCPListenSocketRef);
CFRelease(gTCPListenSocketRef);
-----
To get a stream pair:
-----
CFStreamCreatePairWithSocket(nil, csock, &otEndpointRec.readStream,
&otEndpointRec.writeStream);
CFStreamClientContext context = {0, nil, nil, nil, nil };
CFOptionFlags readFlags = kCFStreamEventHasBytesAvailable |
kCFStreamEventErrorOccurred |
kCFStreamEventEndEncountered;
CFOptionFlags writeFlags = kCFStreamEventCanAcceptBytes |
kCFStreamEventErrorOccurred;
if (!CFReadStreamSetClient(otEndpointRec.readStream, readFlags,
readStreamCallback, &context))
goto reject_connection;
if (!CFWriteStreamSetClient(otEndpointRec.writeStream, writeFlags,
writeStreamCallback, &context))
goto reject_connection;
CFReadStreamScheduleWithRunLoop(otEndpointRec.readStream,
gMainRunLoop, kCFRunLoopCommonModes);
CFWriteStreamScheduleWithRunLoop(otEndpointRec.writeStream,
gMainRunLoop, kCFRunLoopCommonModes);
if (!CFReadStreamOpen(otEndpointRec.readStream))
goto reject_connection;
if (!CFWriteStreamOpen(otEndpointRec.writeStream))
goto reject_connection;
-----
To kill a stream pair:
-----
CFReadStreamSetClient(otEndpointPtr->readStream, 0, nil, nil);
CFReadStreamUnscheduleFromRunLoop(otEndpointPtr->readStream,
gMainRunLoop, kCFRunLoopCommonModes);
CFReadStreamClose(otEndpointPtr->readStream);
CFRelease(otEndpointPtr->readStream);
otEndpointPtr->readStream = nil;
CFWriteStreamSetClient(otEndpointPtr->writeStream, 0, nil, nil);
CFWriteStreamUnscheduleFromRunLoop(otEndpointPtr->writeStream,
gMainRunLoop, kCFRunLoopCommonModes);
CFWriteStreamClose(otEndpointPtr->writeStream);
CFRelease(otEndpointPtr->writeStream);
otEndpointPtr->writeStream = nil;
-----
Avi
--
Avi Drissman
email@hidden
Argh! This darn mail server is trunca
_______________________________________________
macnetworkprog mailing list | email@hidden
Help/Unsubscribe/Archives:
http://www.lists.apple.com/mailman/listinfo/macnetworkprog
Do not post admin requests to the list. They will be ignored.