• 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: CFWriteStreamCallback stops being called
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: CFWriteStreamCallback stops being called


  • Subject: Re: CFWriteStreamCallback stops being called
  • From: Liwei <email@hidden>
  • Date: Wed, 30 Jul 2008 23:02:02 +0800

*Groans*

How then do I check if the flag is set without polling? I thought the
whole purpose of using run-loops is to be able to eliminate the need
to poll something?

(A side question, is there something in OSX that I can use to log my
error messages? Something more native to OSX than stderr?)

2008/7/30 Marcelo Alves <email@hidden>:
>  I not sure if it works like NSStream but you will receive the
> "stream can accept bytes" event just once after each write, not every
> run loop iteration. So you will need a flag telling you the stream can
> accept bytes but your buffer is empty.
>
> :: marcelo.alves
>
>
> 2008/7/30 Liwei <email@hidden>:
>> I've initialised a pair of read and write streams with
>> CFStreamCreatePairWithSocketToHost() and put both of them in my main
>> run-loop to respond to read and write events.
>>
>> The read stream callback basically retrieves and prints out any text
>> it receives from the stream. It works perfectly.
>>
>> The write stream callback basically checks a buffer for any pending
>> bytes to be written. If the event received is
>> kCFStreamEventCanAcceptBytes and there are bytes to be written, it
>> will write as much as it can using CFWriteStreamWrite(). This is what
>> I'm having problems with.
>>
>> I've written a small for-loop to fill up the write buffer before I
>> start the main run-loop (I thought the main run-loop is automatically
>> started? I have to start it manually). When the run-loop starts, all
>> the data from the buffer gets written and I can see the text coming
>> out on the server side.
>>
>> Now, I add a run-loop timer to the code that writes to the buffer (I
>> have implemented mutexes to prevent reading and writing to the buffer
>> at the same time) every 5 seconds and recompile the code again. What I
>> hope to see is that after the initial printout of text from the
>> pre-filled buffer, I will get a printout every 5 seconds due to the
>> timer.
>>
>> The problem is, other than the few printouts that occurred when the
>> timer triggered when the application was still trying to empty the
>> initial buffer, I do not get anything printed after that, even though
>> the timer continues to trigger. I can see my buffer being filled up
>> from 0 (after the initial clearing), but it stops being cleared.
>>
>> It appears that after the buffer is first emptied, the write stream
>> callback stops being called. I've put in debug statements at all the
>> points where I would explicitly remove the write stream from the
>> run-loop, but none of them has been triggered.
>>
>> I've include statements that print out the status of the read and
>> write streams in my run-loop timer as well, they show that both
>> streams are still open.
>>
>> My read and write stream callbacks check for the
>> kCFStreamEventErrorOccurred and kCFStreamEventEndEncountered events as
>> well and none of them has occurred.
>>
>> So why does my callback stop getting called?
>>  _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Macnetworkprog mailing list      (email@hidden)
>> Help/Unsubscribe/Update your Subscription:
>>
>> This email sent to email@hidden
>>
>
 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Macnetworkprog mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: CFWriteStreamCallback stops being called
      • From: "Shawn Erickson" <email@hidden>
    • Re: CFWriteStreamCallback stops being called
      • From: "Marcelo Alves" <email@hidden>
References: 
 >CFWriteStreamCallback stops being called (From: Liwei <email@hidden>)
 >Re: CFWriteStreamCallback stops being called (From: "Marcelo Alves" <email@hidden>)

  • Prev by Date: Re: CFWriteStreamCallback stops being called
  • Next by Date: Re: CFWriteStreamCallback stops being called
  • Previous by thread: Re: CFWriteStreamCallback stops being called
  • Next by thread: Re: CFWriteStreamCallback stops being called
  • Index(es):
    • Date
    • Thread