void OnDemandServerMediaSubsession::deleteStream(unsigned clientSessionId, void*& streamToken) { StreamState* streamState = (StreamState*)streamToken; // Look up (and remove) the destinations for this client session: Destinations* destinations = (Destinations*)(fDestinationsHashTable->Lookup((char const*)clientSessionId)); if (destinations != NULL) { fDestinationsHashTable->Remove((char const*)clientSessionId); // Stop streaming to these destinations: if (streamState != NULL) streamState->endPlaying(destinations); } // Delete the "StreamState" structure if it's no longer being used: if (streamState != NULL) { if (streamState->referenceCount() > 0) --streamState->referenceCount(); if (streamState->referenceCount() == 0) { delete streamState; streamToken = NULL; } } // Finally, delete the destinations themselves: delete destinations; }
void EncoderMediaSubsession::deleteStream(unsigned clientSessionId, void*& streamToken) { StreamState* streamState = (StreamState*)streamToken; Debug(ckite_log_message, "deleteStream entry \n"); // Look up (and remove) the destinations for this client session: Destinations* destinations = (Destinations*)(fDestinationsHashTable->Lookup((char const*)clientSessionId)); if (destinations != NULL) { fDestinationsHashTable->Remove((char const*)clientSessionId); // Stop streaming to these destinations: if (streamState != NULL) streamState->endPlaying(destinations, vType, aType); } // Delete the "StreamState" structure if it's no longer being used: if (streamState != NULL) { if (streamState->referenceCount() > 0) --streamState->referenceCount(); if (streamState->referenceCount() == 0) { delete streamState; if (fLastStreamToken == streamToken) fLastStreamToken = NULL; streamToken = NULL; } } // Finally, delete the destinations themselves: delete destinations; }