@Test public void bitposWithNoMatchingBitExistWithinRange() { String foo = "foo"; jedis.set(foo, String.valueOf(0)); for (int idx = 0; idx < 8 * 5; idx++) { jedis.setbit(foo, idx, true); } /* * byte: 0 1 2 3 4 bit: 11111111 / 11111111 / 11111111 / 11111111 / 11111111 */ long offset = jedis.bitpos(foo, false, new BitPosParams(2, 3)); // offset should be -1 assertEquals(-1, offset); }
@Test public void bitpos() { String foo = "foo"; jedis.set(foo, String.valueOf(0)); jedis.setbit(foo, 3, true); jedis.setbit(foo, 7, true); jedis.setbit(foo, 13, true); jedis.setbit(foo, 39, true); /* * byte: 0 1 2 3 4 bit: 00010001 / 00000100 / 00000000 / 00000000 / 00000001 */ long offset = jedis.bitpos(foo, true); assertEquals(2, offset); offset = jedis.bitpos(foo, false); assertEquals(0, offset); offset = jedis.bitpos(foo, true, new BitPosParams(1)); assertEquals(13, offset); offset = jedis.bitpos(foo, false, new BitPosParams(1)); assertEquals(8, offset); offset = jedis.bitpos(foo, true, new BitPosParams(2, 3)); assertEquals(-1, offset); offset = jedis.bitpos(foo, false, new BitPosParams(2, 3)); assertEquals(16, offset); offset = jedis.bitpos(foo, true, new BitPosParams(3, 4)); assertEquals(39, offset); }
@Test public void bitposBinary() { // binary byte[] bfoo = { 0x01, 0x02, 0x03, 0x04 }; jedis.set(bfoo, Protocol.toByteArray(0)); jedis.setbit(bfoo, 3, true); jedis.setbit(bfoo, 7, true); jedis.setbit(bfoo, 13, true); jedis.setbit(bfoo, 39, true); /* * byte: 0 1 2 3 4 bit: 00010001 / 00000100 / 00000000 / 00000000 / 00000001 */ long offset = jedis.bitpos(bfoo, true); assertEquals(2, offset); offset = jedis.bitpos(bfoo, false); assertEquals(0, offset); offset = jedis.bitpos(bfoo, true, new BitPosParams(1)); assertEquals(13, offset); offset = jedis.bitpos(bfoo, false, new BitPosParams(1)); assertEquals(8, offset); offset = jedis.bitpos(bfoo, true, new BitPosParams(2, 3)); assertEquals(-1, offset); offset = jedis.bitpos(bfoo, false, new BitPosParams(2, 3)); assertEquals(16, offset); offset = jedis.bitpos(bfoo, true, new BitPosParams(3, 4)); assertEquals(39, offset); }
@Override public Long bitpos(String key, boolean value, BitPosParams params) { Span span = helper.buildSpan("bitpos", key); span.setTag("value", value); span.setTag("params", TracingHelper.toString(params.getParams())); try { return super.bitpos(key, value, params); } catch (Exception e) { onError(e, span); throw e; } finally { span.finish(); } }
@Override public Long bitpos(byte[] key, boolean value, BitPosParams params) { Span span = helper.buildSpan("bitpos", key); span.setTag("value", value); span.setTag("params", TracingHelper.toString(params.getParams())); try { return super.bitpos(key, value, params); } catch (Exception e) { onError(e, span); throw e; } finally { span.finish(); } }
@Override public long bitPos(final String key, final boolean value, final long byteStart, final long byteEnd) { return runTask(new Task<J, Long>() { @Override public Long run(J jedis) { BitPosParams params = byteEnd < 0 ? new BitPosParams(byteStart) : new BitPosParams(byteStart, byteEnd); Long ret = jedis.bitpos(key, value, params); if (ret == null || ret < 0) return -1L; else return ret; } }); }
Long bitpos(final String key , final boolean bit , final BitPosParams param) throws FedisException{ final ActionResult<Long> result = new ActionResult<Long>(); redisProxy.runCommand(key, new Action<Jedis>() { @Override public void run(Jedis jedis) { result.setValue(jedis.bitpos(SafeEncoder.encode(key), bit, param)); } }); return result.getValue(); }
@Override public Long bitpos(String arg0, boolean arg1, BitPosParams arg2) { // TODO Auto-generated method stub return null; }
@Override public Long bitpos(String key, boolean value, BitPosParams params) { return jedis.bitpos(key, value, params); }
@Override public Long bitpos(byte[] key, boolean value, BitPosParams params) { return null; }
@Override public Long bitpos(String key, boolean value, BitPosParams params) { return null; }
Long bitpos(final String key , boolean bit) throws FedisException{ return bitpos(key , bit , new BitPosParams(0)); }
@Override public Long bitpos(String key, boolean value, BitPosParams params) { throw new FakeJedisNotImplementedException(); }
@Override public Long bitpos(byte[] key, boolean value, BitPosParams params) { throw new FakeJedisNotImplementedException(); }
@Override public Response<Long> bitpos(String key, boolean value, BitPosParams params) { throw new FakeJedisNotImplementedException(); }
@Override public Response<Long> bitpos(byte[] key, boolean value, BitPosParams params) { throw new FakeJedisNotImplementedException(); }
private Long bitpos0(Jedis j, String key, boolean value, long start) { return j.bitpos(key, value, new BitPosParams(start)); }
private Long bitpos0(Jedis j, String key, boolean value, long start, long end) { return j.bitpos(key, value, new BitPosParams(start, end)); }