bool InNetLiveFLVStream::SendStreamMessage(Variant &completeMessage, bool persistent) { //2. Loop on the subscribed streams and send the message LinkedListNode<BaseOutStream *> *pTemp = _pOutStreams; while ((pTemp != NULL) && (!IsEnqueueForDelete())) { if (pTemp->info->IsEnqueueForDelete()) { continue; } if (TAG_KIND_OF(pTemp->info->GetType(), ST_OUT_NET_RTMP)) { if (!((BaseOutNetRTMPStream *) pTemp->info)->SendStreamMessage(completeMessage)) { FATAL("Unable to send notify on stream. The connection will go down"); pTemp->info->EnqueueForDelete(); } } pTemp = pTemp->pPrev; } //3. Test to see if we are still alive. One of the target streams might //be on the same RTMP connection as this stream is and our connection //here might be enque for delete if (IsEnqueueForDelete()) return false; //4. Save the message for future use if necessary if (persistent) _lastStreamMessage = completeMessage; //5. Done return true; }
void BaseInStream::VideoStreamCapabilitiesChanged( StreamCapabilities *pCapabilities, VideoCodecInfo *pOld, VideoCodecInfo *pNew) { LinkedListNode<BaseOutStream *> *pIterator = _pOutStreams; LinkedListNode<BaseOutStream *> *pCurrent = NULL; while (pIterator != NULL) { pCurrent = pIterator; pIterator = pIterator->pPrev; pCurrent->info->SignalVideoStreamCapabilitiesChanged(pCapabilities, pOld, pNew); if (IsEnqueueForDelete()) return; } }