/*
* Jicofo, the Jitsi Conference Focus.
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package org.jitsi.jicofo.recording;
import org.jitsi.protocol.xmpp.*;
import org.jivesoftware.smack.*;
import org.jivesoftware.smack.filter.*;
/**
* Abstract class used by {@link org.jitsi.jicofo.JitsiMeetConference} for
* controlling recording functionality.
*
* @author Pawel Domas
*/
public abstract class Recorder
implements PacketListener,
PacketFilter
{
/**
* Recorder component XMPP address.
*/
protected final String recorderComponentJid;
/**
* Smack operation set for current XMPP connection.
*/
protected final OperationSetDirectSmackXmpp xmpp;
public Recorder(String recorderComponentJid,
OperationSetDirectSmackXmpp xmpp)
{
this.recorderComponentJid = recorderComponentJid;
this.xmpp = xmpp;
xmpp.addPacketHandler(this, this);
}
/**
* Releases resources and stops any future processing.
*/
public void dispose()
{
xmpp.removePacketHandler(this);
}
/**
* Returns current conference recording status.
* @return <tt>true</tt> if the conference is currently being recorded
* or <tt>false</tt> otherwise.
*/
public abstract boolean isRecording();
/**
* Toggles recording status of the conference handled by this instance.
*
* @param from JID of the user that wants to modify recording status.
* @param token recording security token(check by the implementation).
* @param doRecord <tt>true</tt> to enable recording.
* @param path output recording path(implementation specific).
*
* @return <tt>true</tt> if security token was successfully verified and
* appropriate control actions have been taken or <tt>false</tt>
* otherwise.
*/
public abstract boolean setRecording(
String from, String token, boolean doRecord, String path);
}