blob: 9413ce99d716f7bf571df9690bf69362169dde68 [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package io.v.impl.google.lib.discovery;
import com.google.common.primitives.Bytes;
import java.nio.ByteBuffer;
import java.util.UUID;
import io.v.x.ref.lib.discovery.Uuid;
/**
* A class for generating v5 UUIDs and converting from {@link java.util.UUID} and
* {@link io.v.x.ref.lib.discovery.Uuid}. T{@link java.util.UUID} does not provide
* any mechanism to compute v5 UUIDs which are used to convert InterfaceNames to service
* UUIDs. Conversion from {@link Uuid} and {@link UUID} is necessary because the VDL type
* and the native type are annoying to convert to.
*/
public class UUIDUtil {
public static native UUID UUIDForInterfaceName(String name);
public static native UUID UUIDForAttributeKey(String key);
/**
* Converts from {@link java.util.UUID} to {@link Uuid}.
*/
public static Uuid UUIDToUuid(UUID id) {
ByteBuffer b = ByteBuffer.allocate(16);
b.putLong(id.getMostSignificantBits());
b.putLong(id.getLeastSignificantBits());
return new Uuid(Bytes.asList(b.array()));
}
/**
* Converts from {@link Uuid} to {@link UUID}
*/
public static UUID UuidToUUID(Uuid id) {
ByteBuffer b = ByteBuffer.wrap(Bytes.toArray(id));
return new UUID(b.getLong(), b.getLong());
}
}