package org.rhq.cassandra.schema.migration;
import java.util.concurrent.atomic.AtomicReference;
import com.datastax.driver.core.Query;
import com.datastax.driver.core.ResultSetFuture;
import com.datastax.driver.core.Session;
import com.google.common.util.concurrent.RateLimiter;
/**
* @author John Sanda
*/
public class QueryExecutor {
private AtomicReference<RateLimiter> readPermitsRef;
private AtomicReference<RateLimiter> writePermitsRef;
private Session session;
public QueryExecutor(Session session, AtomicReference<RateLimiter> readPermitsRef,
AtomicReference<RateLimiter> writePermitsRef) {
this.session = session;
this.readPermitsRef = readPermitsRef;
this.writePermitsRef = writePermitsRef;
}
public ResultSetFuture executeRead(Query query) {
readPermitsRef.get().acquire();
return session.executeAsync(query);
}
public ResultSetFuture executeWrite(Query query) {
writePermitsRef.get().acquire();
return session.executeAsync(query);
}
}