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

org.littleshoot.stun.stack.message.turn.ConnectRequest Maven / Gradle / Ivy

The newest version!
package org.littleshoot.stun.stack.message.turn;

import java.net.InetSocketAddress;
import java.util.Map;

import org.apache.commons.id.uuid.UUID;
import org.littleshoot.stun.stack.message.AbstractStunMessage;
import org.littleshoot.stun.stack.message.StunMessageType;
import org.littleshoot.stun.stack.message.StunMessageVisitor;
import org.littleshoot.stun.stack.message.attributes.StunAttribute;
import org.littleshoot.stun.stack.message.attributes.StunAttributeType;
import org.littleshoot.stun.stack.message.attributes.turn.RemoteAddressAttribute;

/**
 * A TURN connect request message.
 */
public class ConnectRequest extends AbstractStunMessage
    {

    private final InetSocketAddress m_remoteAddress;

    /**
     * Creates a new connection request.
     * 
     * @param transactionId The ID of the transaction.
     * @param attributes
     */
    public ConnectRequest(final UUID transactionId, 
        final Map attributes)
        {
        super(transactionId, StunMessageType.CONNECT_REQUEST, attributes);
        m_remoteAddress = 
            ((RemoteAddressAttribute) attributes.get(
                StunAttributeType.REMOTE_ADDRESS)).getInetSocketAddress();
        }

    /**
     * Creates a new connect request for the specified remote address.
     * 
     * @param remoteAddress The remote host to connect to. 
     */
    public ConnectRequest(final InetSocketAddress remoteAddress)
        {
        super(UUID.randomUUID(), StunMessageType.CONNECT_REQUEST, 
            createRemoteAddress(remoteAddress));
        this.m_remoteAddress = remoteAddress;
        }

    /**
     * Accessor for the remote address attribute.
     * 
     * @return The remote address attribute.
     */
    public InetSocketAddress getRemoteAddress()
        {
        return m_remoteAddress;
        }
    
    public  T accept(final StunMessageVisitor visitor)
        {
        return visitor.visitConnectRequest(this);
        }

    }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy