Implemented BRPOP

This commit is contained in:
Jonathan Leibiusky
2010-08-03 01:23:51 -03:00
parent dea8c12d1e
commit 2131265436
4 changed files with 40 additions and 2 deletions

View File

@@ -413,4 +413,8 @@ public class Client extends Connection {
public void sort(String key, String dstkey) throws JedisException {
sendCommand("SORT", key, "STORE", dstkey);
}
public void brpop(String[] args) throws JedisException {
sendCommand("BRPOP", args);
}
}

View File

@@ -530,4 +530,16 @@ public class Jedis {
client.sort(key, dstkey);
return client.getIntegerReply();
}
public List<String> brpop(int timeout, String... keys)
throws JedisException {
List<String> args = new ArrayList<String>();
for (String arg : keys) {
args.add(arg);
}
args.add(String.valueOf(timeout));
client.brpop(args.toArray(new String[args.size()]));
return client.getMultiBulkReply();
}
}

View File

@@ -242,4 +242,26 @@ public class ListCommandsTest extends Assert {
});
jedis.lpush("foo", "bar");
}
@Test
public void brpop() throws JedisException {
List<String> result = jedis.brpop(2, "foo");
assertNull(result);
new Thread(new Runnable() {
public void run() {
try {
Jedis j = new Jedis("localhost");
j.connect();
List<String> result = j.brpop(0, "foo");
assertNotNull(result);
assertEquals(1, result.size());
assertEquals("bar", result.get(0));
} catch (Exception ex) {
fail(ex.getMessage());
}
}
});
jedis.lpush("foo", "bar");
}
}