package org.mobicents.servlet.sip.seam.entrypoint.media;
import javax.servlet.sip.SipSession;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.annotations.Unwrap;
import org.mobicents.mscontrol.MsSession;
/**
* This class provides the session scoped media controller for each SIP session.
*
* @author vralev
*
*/
@Name("mediaController")
@Scope(ScopeType.STATELESS)
@AutoCreate
public class MediaControllerWrapper {
@In(required=false) SipSession sipSession;
@In(required=false) MsSession msSession;
@Unwrap
public synchronized MediaController getMediaController() {
// If not SIP session
if(sipSession == null) return null;
MediaController mediaController = MediaControllerManager.instance().getMediaController(sipSession);
if(mediaController == null) {
mediaController = new MediaController(sipSession, msSession);
MediaControllerManager.instance().putMediaController(sipSession, mediaController);
}
return mediaController;
}
//TODO: Add observer on session destroyed
}