/* * Jicofo, the Jitsi Conference Focus. * * Distributable under LGPL license. * See terms of license at gnu.org. */ package org.jitsi.protocol.xmpp; import net.java.sip.communicator.impl.protocol.jabber.extensions.jingle.*; import net.java.sip.communicator.service.protocol.*; import org.jitsi.jicofo.*; import org.jitsi.protocol.xmpp.util.*; import java.util.*; /** * Operation set allows to establish and control Jingle sessions. Exposed * functionality is limited to the minimum required by Jitsi Meet conference. * {@link org.jitsi.protocol.xmpp.JingleRequestHandler} set using * {@link #setRequestHandler(JingleRequestHandler)} will receive notifications * about various Jingle packets received. * * @author Pawel Domas */ public interface OperationSetJingle extends OperationSet { /** * Start new session by sending 'session-initiate' IQ to given XMPP address. * * @param useBundle <tt>true</tt> if contents description in the IQ sent * should contain additional signaling required for RTP * bundle usage in Jitsi Meet. * @param address the XMPP address that will be remote destination of new * Jingle session. * @param contents media contents description of our offer. */ void initiateSession( boolean useBundle, String address, List<ContentPacketExtension> contents); /** * Sends 'source-add' proprietary notification. * * @param ssrcMap the media SSRCs map which will be included in * the notification. * @param ssrcGroupMap the map of media SSRC groups that will be included in * the notification. * @param session the <tt>JingleSession</tt> used to send the notification. */ void sendAddSourceIQ(MediaSSRCMap ssrcMap, MediaSSRCGroupMap ssrcGroupMap, JingleSession session); /** * Sends 'source-remove' notification to the peer of given * <tt>JingleSession</tt>. * * @param ssrcMap the map of media SSRCs that will be included in * the notification. * @param ssrcGroupMap the map of media SSRC groups that will be included in * the notification. * @param session the <tt>JingleSession</tt> used to send the notification. */ void sendRemoveSourceIQ(MediaSSRCMap ssrcMap, MediaSSRCGroupMap ssrcGroupMap, JingleSession session); /** * Sets the {@link JingleRequestHandler} that will receive jingle * notifications. * * @param jingleRequestHandler {@link JingleRequestHandler} object that will * be receiving jingle notifications from this operation set. */ void setRequestHandler(JingleRequestHandler jingleRequestHandler); /** * Terminates given session by sending 'session-terminate' IQ which will * optionally include the <tt>Reason</tt> supplied. * * @param session the <tt>JingleSession</tt> to be terminated. * @param reason optional <tt>Reason</tt> specifying the reason of session * termination. */ void terminateSession(JingleSession session, Reason reason); }