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

org.asteriskjava.fastagi.internal.AsyncAgiReader Maven / Gradle / Ivy

There is a newer version: 3.40.1
Show newest version
package org.asteriskjava.fastagi.internal;

import java.util.List;
import java.util.concurrent.BlockingQueue;

import org.asteriskjava.fastagi.AgiException;
import org.asteriskjava.fastagi.AgiReader;
import org.asteriskjava.fastagi.AgiRequest;
import org.asteriskjava.fastagi.reply.AgiReply;
import org.asteriskjava.manager.ManagerConnection;
import org.asteriskjava.manager.event.AsyncAgiEvent;

public class AsyncAgiReader implements AgiReader
{
    private final AgiRequestImpl request;
    private final BlockingQueue asyncAgiEvents;

    public AsyncAgiReader(ManagerConnection connection, List environment, BlockingQueue asyncAgiEvents)
    {
        this.request = new AgiRequestImpl(environment);
        this.asyncAgiEvents = asyncAgiEvents;

        request.setLocalAddress(connection.getLocalAddress());
        request.setLocalPort(connection.getLocalPort());
        request.setRemoteAddress(connection.getRemoteAddress());
        request.setRemotePort(connection.getRemotePort());
    }

    public AgiRequest readRequest() throws AgiException
    {
        return request;
    }

    public AgiReply readReply() throws AgiException
    {
        try
        {
            return new AgiReplyImpl(asyncAgiEvents.take().decodeResult());
        }
        catch (InterruptedException e)
        {
            Thread.currentThread().interrupt();
            throw new AgiException("Interrupted while waiting for AsyncAgiEvent", e);
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy