package org.mobicents.media.server.ctrl.rtsp; import java.util.Collection; import java.util.concurrent.Callable; import org.jboss.netty.handler.codec.http.HttpHeaders; import org.mobicents.rtsp.DefaultRtspResponse; import org.mobicents.rtsp.RtspHeaders; import org.mobicents.rtsp.RtspRequest; import org.mobicents.rtsp.RtspResponse; import org.mobicents.rtsp.RtspResponseStatus; import org.mobicents.rtsp.RtspVersion; /** * * @author amit bhayani * */ public class TeardownAction implements Callable<RtspResponse> { private RtspController rtspController = null; private RtspRequest request = null; public TeardownAction(RtspController rtspController, RtspRequest request) { this.rtspController = rtspController; this.request = request; } public RtspResponse call() throws Exception { RtspResponse response = null; String sessionId = this.request.getHeader(RtspHeaders.Names.SESSION); if (sessionId != null) { Session session = this.rtspController.getSession(sessionId); if (session != null) { Collection<ConnectionActivity> connActivities = session.getActivities(); // TODO : As of now its only Audio ConnectionActivity connActivity = connActivities.iterator().next(); connActivity.close(); response = new DefaultRtspResponse(RtspVersion.RTSP_1_0, RtspResponseStatus.OK); response.setHeader(HttpHeaders.Names.SERVER, RtspController.SERVER); response.setHeader(RtspHeaders.Names.CSEQ, this.request.getHeader(RtspHeaders.Names.CSEQ)); response.setHeader(RtspHeaders.Names.SESSION, session.getId()); session = null; return response; } else { response = new DefaultRtspResponse(RtspVersion.RTSP_1_0, RtspResponseStatus.SESSION_NOT_FOUND); response.setHeader(HttpHeaders.Names.SERVER, RtspController.SERVER); response.setHeader(RtspHeaders.Names.CSEQ, this.request.getHeader(RtspHeaders.Names.CSEQ)); response.setHeader(RtspHeaders.Names.SESSION, sessionId); return response; } } else { response = new DefaultRtspResponse(RtspVersion.RTSP_1_0, RtspResponseStatus.BAD_REQUEST); response.setHeader(HttpHeaders.Names.SERVER, RtspController.SERVER); response.setHeader(RtspHeaders.Names.CSEQ, this.request.getHeader(RtspHeaders.Names.CSEQ)); return response; } } }