package net.java.otr4j; import java.security.PublicKey; import java.util.List; import net.java.otr4j.session.Session; import net.java.otr4j.session.SessionID; import net.java.otr4j.session.SessionStatus; import net.java.otr4j.session.TLV; /** @author George Politis */ public interface OtrEngine { /** * @param sessionID The session identifier. * @param content The message content to be transformed. * @param tlvs The TLVs * @return The transformed message content. * @throws OtrException */ public abstract String transformReceiving(SessionID sessionID, String content, List<TLV> tlvs) throws OtrException; /** * @param sessionID The session identifier. * @param content The message content to be transformed. * @return The transformed message content. * @throws OtrException */ public abstract String transformReceiving(SessionID sessionID, String content) throws OtrException; /** * @param sessionID The session identifier. * @param content The message content to be transformed. * @return The transformed message content. * @throws OtrException */ public abstract String transformSending(SessionID sessionID, String content) throws OtrException; /** * @param sessionID The session identifier. * @param content The message content to be transformed. * @param tlvs The TLVs to attach. * @return The transformed message content. * @throws OtrException */ public abstract String transformSending(SessionID sessionID, String content, List<TLV> tlvs) throws OtrException; /** * Starts an Off-the-Record session, if there is no active one. * * @param sessionID The session identifier. * @throws OtrException */ public abstract void startSession(SessionID sessionID) throws OtrException; /** Get an OTR session. */ public abstract Session getSession(SessionID sessionID) throws OtrException; /** * Ends the Off-the-Record session, if exists. * * @param sessionID The session identifier. * @throws OtrException */ public abstract void endSession(SessionID sessionID) throws OtrException; /** * Stops/Starts the Off-the-Record session. * * @param sessionID The session identifier. * @throws OtrException */ public abstract void refreshSession(SessionID sessionID) throws OtrException; /** * @param sessionID The session identifier. * @return The status of an Off-the-Record session. */ public abstract SessionStatus getSessionStatus(SessionID sessionID); /** * @param sessionID The session identifier. * @return The remote public key. */ public abstract PublicKey getRemotePublicKey(SessionID sessionID); public abstract void addOtrEngineListener(OtrEngineListener l); public abstract void removeOtrEngineListener(OtrEngineListener l); }