org.asteriskjava.fastagi.internal.AsyncAgiReader Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of asterisk-java Show documentation
Show all versions of asterisk-java Show documentation
The free Java library for Asterisk PBX integration.
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);
}
}
}