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

@@ -10,7 +10,7 @@ Jedis is a WORK IN PROGRESS.
- Publish/Subscribe - Publish/Subscribe
- Persistence control commands - Persistence control commands
- Remote server control commands - Remote server control commands
- The AUTH, BRPOP, ZRANGEBYSCORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE commands - The AUTH, ZRANGEBYSCORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE commands
But stay close because things are going fast and all this will be implemented soon! But stay close because things are going fast and all this will be implemented soon!
@@ -20,7 +20,7 @@ But stay close because things are going fast and all this will be implemented so
- Commands operating on all the kind of values - Commands operating on all the kind of values
- Commands operating on string values - Commands operating on string values
- Commands operating on hashes - Commands operating on hashes
- Commands operating on lists (not BRPOP) - Commands operating on lists
- Commands operating on sets - Commands operating on sets
- Commands operating on sorted sets (not ZRANGEBYSCORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE) - Commands operating on sorted sets (not ZRANGEBYSCORE, ZREMRANGEBYRANK, ZREMRANGEBYSCORE, ZUNIONSTORE, ZINTERSTORE)
- Transactions - Transactions

View File

@@ -413,4 +413,8 @@ public class Client extends Connection {
public void sort(String key, String dstkey) throws JedisException { public void sort(String key, String dstkey) throws JedisException {
sendCommand("SORT", key, "STORE", dstkey); 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); client.sort(key, dstkey);
return client.getIntegerReply(); 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"); 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");
}
} }