public static String byteBufferToString(StaticBuffer b) { try { ByteBuffer bb = b.asByteBuffer(); return new String(bb.array(), bb.position() + bb.arrayOffset(), bb.remaining(), "UTF-8"); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } }
@Override public int getSize(StaticBuffer data) { return data.length(); }
public static String encodeKeyBuffer(final StaticBuffer input) { if (input == null || input.length() == 0) { return null; } final ByteBuffer buf = input.asByteBuffer(); final byte[] bytes = Arrays.copyOf(buf.array(), buf.limit()); return Hex.encodeHexString(bytes); }
List<PartitionIDRange> partitionRanges = Lists.newArrayList(); for (KeyRange local : locals) { Preconditions.checkArgument(local.getStart().length() >= 4); Preconditions.checkArgument(local.getEnd().length() >= 4); if (local.getStart().equals(local.getEnd())) { //Start=End => Partition spans entire range partitionRanges.add(new PartitionIDRange(0, partitionIdBound, partitionIdBound)); int startInt = local.getStart().getInt(0); int lowerID = startInt >>> backShift; assert lowerID>=0 && lowerID<partitionIdBound; for (int i=4;i<start.length() && !truncatedBits;i++) { if (start.getByte(i)!=0) truncatedBits=true; int upperID = local.getEnd().getInt(0) >>> backShift; //upper id is exclusive if ((local.getStart().compareTo(local.getEnd())<0 && lowerID>=upperID)) { discardRange(local); continue;
private long readSetting(String identifier, final StaticBuffer column, long defaultValue) { final StaticBuffer key = getSettingKey(identifier); StaticBuffer value = BackendOperation.execute(new BackendOperation.Transactional<StaticBuffer>() { @Override public StaticBuffer call(StoreTransaction txh) throws BackendException { return KCVSUtil.get(store,key,column,txh); } @Override public String toString() { return "readingLogSetting"; } },this,times,maxReadTime); if (value==null) return defaultValue; else { Preconditions.checkArgument(value.length()==8); return value.getLong(0); } }
private String staticBuffer2String(final StaticBuffer s) { return new String(s.as(StaticBuffer.ARRAY_FACTORY),Charset.forName("UTF-8")); }
private<O> O staticBuffer2Object(final StaticBuffer s, Class<O> dataType) { Object value = serializer.readClassAndObject(s.asReadBuffer()); Preconditions.checkArgument(dataType.isInstance(value),"Could not deserialize to [%s], got: %s",dataType,value); return (O)value; }
public static long bufferToLong(StaticBuffer b) { return b.getLong(0); } }
protected AttributeValue encodeValue(final StaticBuffer value) { // Dynamo does not allow empty binary values, so we use a placeholder // for empty values if (value.length() <= 0) { return new AttributeValue().withS(Constants.EMPTY_BUFFER_PLACEHOLDER); } return new AttributeValue().withB(value.asByteBuffer()); }
public static StaticBuffer hashPrefixKey(final HashLength hashPrefixLen, final StaticBuffer key) { final int prefixLen = hashPrefixLen.length(); final StaticBuffer.Factory<HashCode> hashFactory; switch (hashPrefixLen) { case SHORT: hashFactory = SHORT_HASH_FACTORY; break; case LONG: hashFactory = LONG_HASH_FACTORY; break; default: throw new IllegalArgumentException("Unknown hash prefix: " + hashPrefixLen); } HashCode hashcode = key.as(hashFactory); WriteByteBuffer newKey = new WriteByteBuffer(prefixLen+key.length()); assert prefixLen==4 || prefixLen==8; if (prefixLen==4) newKey.putInt(hashcode.asInt()); else newKey.putLong(hashcode.asLong()); newKey.putBytes(key); return newKey.getStaticBuffer(); }
@Override public void processMessage(Message message) { StaticBuffer content = message.getContent(); assertEquals(8,content.length()); long value = content.getLong(0); log.debug("Read log value {} by senderid \"{}\"", value, message.getSenderId()); if (expectIncreasingValues) { assertTrue("Message out of order or duplicated: " + lastMessageValue + " preceded " + value, lastMessageValue<value); lastMessageValue = value; } totalMsg.incrementAndGet(); totalValue.addAndGet(value); } }
private static String encodeQueries(List<SliceQuery> queries) { List<String> queryStrings = new ArrayList<>(queries.size()); for (SliceQuery query : queries) { String start = Hex.bytesToHex(query.getSliceStart().as(StaticBuffer.ARRAY_FACTORY)); String end = Hex.bytesToHex(query.getSliceEnd().as(StaticBuffer.ARRAY_FACTORY)); final int limit; if (query.hasLimit()) { limit = query.getLimit(); } else { limit = -1; } queryStrings.add(String.format("%s/%s/%d", start, end, limit)); } return Joiner.on(":").join(queryStrings); }
public static String getString(StaticBuffer b) { return serial.readObjectNotNull(b.asReadBuffer(), String.class); }