• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: CFNetwork crash!
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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.

  • Follow-Ups:
    • Re: CFNetwork crash!
      • From: Jeremy Wyld <email@hidden>
References: 
 >Re: CFNetwork crash! (From: Becky Willrich <email@hidden>)

  • Prev by Date: Re: local host IP address on X
  • Next by Date: Re: local host IP address on X
  • Previous by thread: Re: CFNetwork crash!
  • Next by thread: Re: CFNetwork crash!
  • Index(es):
    • Date
    • Thread