All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.lastbamboo.common.ice.IceStunConnectivityCheckerFactoryImpl Maven / Gradle / Ivy

package org.lastbamboo.common.ice;

import org.littleshoot.mina.common.IoSession;
import org.littleshoot.stun.stack.message.StunMessageVisitor;
import org.littleshoot.stun.stack.message.StunMessageVisitorFactory;
import org.littleshoot.stun.stack.transaction.StunTransactionTracker;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Factory for creating ICE connectivity checkers.
 * 
 * @param  This is also a message visitor for visiting messages on the port
 * we're checking.  T is the class the visitors return.
 */
public class IceStunConnectivityCheckerFactoryImpl implements
    StunMessageVisitorFactory
    {
    
    private final Logger m_log = LoggerFactory.getLogger(getClass());
    private final IceAgent m_iceAgent;
    private final StunTransactionTracker m_transactionTracker;
    private final IceStunCheckerFactory m_checkerFactory;
    private final IceBindingRequestTracker m_bindingRequestTracker =
        new IceBindingRequestTrackerImpl();

    /**
     * Creates a new factory for creating connectivity checkers.
     * 
     * @param iceAgent The agent performing the checks.
     * @param transactionTracker The class that keeps track of STUN transactions 
     * during the checks.
     * @param checkerFactory The class that creates new checkers.
     */
    public IceStunConnectivityCheckerFactoryImpl(final IceAgent iceAgent, 
        final StunTransactionTracker transactionTracker, 
        final IceStunCheckerFactory checkerFactory)
        {
        m_iceAgent = iceAgent;
        m_transactionTracker = transactionTracker;
        m_checkerFactory = checkerFactory;
        }

    public StunMessageVisitor createVisitor(final IoSession session)
        {
        m_log.debug("Creating new message visitor for session: {}", session);
        return new IceStunConnectivityCheckerImpl(this.m_iceAgent, 
            session, this.m_transactionTracker, 
            this.m_checkerFactory, m_bindingRequestTracker);
        }

    }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy