/**
     * We have a established session: notify the listeners
     *
     * @see org.jivesoftware.smackx.jingle.JingleNegotiator.State#eventEnter()
     */
    public void eventEnter() {
      PayloadType.Audio bestCommonAudioPt = getMediaNeg().getBestCommonAudioPt();
      TransportCandidate bestRemoteCandidate = getTransportNeg().getBestRemoteCandidate();
      TransportCandidate acceptedLocalCandidate = getTransportNeg().getAcceptedLocalCandidate();

      // Trigger the session established flag
      triggerSessionEstablished(bestCommonAudioPt, bestRemoteCandidate, acceptedLocalCandidate);

      super.eventEnter();
    }
 /**
  * An error has occurred.
  *
  * @throws XMPPException
  */
 public void eventError(IQ iq) throws XMPPException {
   triggerSessionClosedOnError(new XMPPException(iq.getError().getMessage()));
   super.eventError(iq);
 }
 /**
  * Exit of the state
  *
  * @see org.jivesoftware.smackx.jingle.JingleNegotiator.State#eventExit()
  */
 public void eventExit() {
   removeMediaListener(jingleMediaListener);
   removeTransportListener(jingleTransportListener);
   super.eventExit();
 }
 /**
  * An error has occurred.
  *
  * @throws XMPPException
  */
 public void eventError(IQ iq) throws XMPPException {
   if (iq == null) return;
   triggerSessionClosedOnError(new XMPPException(iq.getError()));
   super.eventError(iq);
 }
 /**
  * Enter in the pending state: wait for the sub-negotiators.
  *
  * @see org.jivesoftware.smackx.jingle.JingleNegotiator.State#eventEnter()
  */
 public void eventEnter() {
   // Add the listeners to the sub-negotiators...
   addMediaListener(jingleMediaListener);
   addTransportListener(jingleTransportListener);
   super.eventEnter();
 }