/** Notifies handler on stream recording stop */
 private void notifyRecordingStop() {
   IStreamAwareScopeHandler handler = getStreamAwareHandler();
   if (handler != null) {
     try {
       handler.streamRecordStop(this);
     } catch (Throwable t) {
       log.error("Error in notifyBroadcastClose", t);
     }
   }
 }
 /** Notifies handler on stream broadcast start */
 protected void notifyBroadcastStart() {
   IStreamAwareScopeHandler handler = getStreamAwareHandler();
   if (handler != null) {
     try {
       handler.streamBroadcastStart(this);
     } catch (Throwable t) {
       log.error("error notify streamBroadcastStart", t);
     }
   }
 }
 /** Begin VOD broadcasting */
 protected void startBroadcastVOD() {
   nextRTMPMessage = null;
   vodStartTS = 0;
   serverStartTS = System.currentTimeMillis();
   IStreamAwareScopeHandler handler = getStreamAwareHandler();
   if (handler != null) {
     if (recordingListener != null && recordingListener.get().isRecording()) {
       // callback for record start
       handler.streamRecordStart(this);
     } else {
       // callback for publish start
       handler.streamPublishStart(this);
     }
   }
   notifyBroadcastStart();
   scheduleNextMessage();
 }