/**
*
*/
package com.trendrr.strest.client;
import java.util.concurrent.Semaphore;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jboss.netty.handler.codec.http.HttpResponse;
/**
* @author Dustin Norlander
* @created Jan 31, 2011
*
*/
public class SynchronousRequest implements StrestCallback {
protected Log log = LogFactory.getLog(SynchronousRequest.class);
Semaphore lock = new Semaphore(1, true);
HttpResponse response;
public SynchronousRequest() {
try {
//take the only semaphore
lock.acquire(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public HttpResponse awaitResponse() {
try {
//try to aquire a semaphore, none is available so we wait.
lock.acquire(1);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return this.response;
}
/* (non-Javadoc)
* @see com.trendrr.strest.client.StrestCallback#messageRecieved(org.jboss.netty.handler.codec.http.HttpResponse)
*/
@Override
public void messageRecieved(HttpResponse response) {
// TODO Auto-generated method stub
this.response = response;
//release the single semaphore.
lock.release(1);
}
/* (non-Javadoc)
* @see com.trendrr.strest.client.StrestCallback#txnComplete()
*/
@Override
public void txnComplete() {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see com.trendrr.strest.client.StrestCallback#error(java.lang.Throwable)
*/
@Override
public void error(Throwable x) {
// TODO Auto-generated method stub
}
}