List of usage examples for java.nio ByteBuffer putLong
public abstract ByteBuffer putLong(long value);
From source file:org.ow2.authzforce.pap.dao.flatfile.FlatFileBasedDomainsDAO.java
@Override public String addDomain(final WritableDomainProperties props) throws IOException, IllegalArgumentException { final UUID uuid = uuidGen.generate(); /*/*w w w .j a v a 2 s. com*/ * Encode UUID with Base64url to have shorter IDs in REST API URL paths * and to be compatible with filenames on any operating system, since * the resulting domain ID is used as name for the directory where all * the domain's data will be stored. */ final ByteBuffer byteBuf = ByteBuffer.wrap(new byte[16]); byteBuf.putLong(uuid.getMostSignificantBits()); byteBuf.putLong(uuid.getLeastSignificantBits()); final String domainId = FlatFileDAOUtils.base64UrlEncode(byteBuf.array()); synchronized (domainsRootDir) { // this should not happen if the UUID generator can be trusted, but // - hey - we never // know. if (this.domainMap.containsKey(domainId)) { throw new ConcurrentModificationException( "Generated domain ID conflicts (is same as) ID of existing domain (flawed domain UUID generator or ID generated in different way?): ID=" + domainId); } final Path domainDir = this.domainsRootDir.resolve(domainId); if (Files.notExists(domainDir)) { /* * Create/initialize new domain directory from domain template * directory */ FlatFileDAOUtils.copyDirectory(this.domainTmplDirPath, domainDir, 3); } addDomainToCacheAfterDirectoryCreated(domainId, domainDir, props); } return domainId; }
From source file:nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleProtocol.java
byte[] encodeInstallMetadata(UUID uuid, String appName, short appVersion, short sdkVersion, int flags, int iconId) { final short METADATA_LENGTH = 126; byte[] name_buf = new byte[96]; System.arraycopy(appName.getBytes(), 0, name_buf, 0, appName.getBytes().length); ByteBuffer buf = ByteBuffer.allocate(METADATA_LENGTH); buf.order(ByteOrder.BIG_ENDIAN); buf.putLong(uuid.getMostSignificantBits()); // watchapp uuid buf.putLong(uuid.getLeastSignificantBits()); buf.order(ByteOrder.LITTLE_ENDIAN); buf.putInt(flags);/* w w w . j a va2 s . co m*/ buf.putInt(iconId); buf.putShort(appVersion); buf.putShort(sdkVersion); buf.put((byte) 0); // app_face_bgcolor buf.put((byte) 0); // app_face_template_id buf.put(name_buf); // 96 bytes return encodeBlobdb(uuid, BLOBDB_INSERT, BLOBDB_APP, buf.array()); }
From source file:nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleProtocol.java
byte[] encodeActivateWeather(boolean activate) { if (activate) { ByteBuffer buf = ByteBuffer.allocate(0x61); buf.put((byte) 1); buf.order(ByteOrder.BIG_ENDIAN); buf.putLong(UUID_LOCATION.getMostSignificantBits()); buf.putLong(UUID_LOCATION.getLeastSignificantBits()); // disable remaining 5 possible location buf.put(new byte[60 - LENGTH_UUID]); return encodeBlobdb("weatherApp", BLOBDB_INSERT, BLOBDB_APPSETTINGS, buf.array()); } else {// ww w .j a v a 2s.co m return encodeBlobdb("weatherApp", BLOBDB_DELETE, BLOBDB_APPSETTINGS, null); } }
From source file:org.plasma.sdo.core.CoreDataObject.java
public String uuidToBase64(String str) { ByteBuffer bb = ByteBuffer.wrap(new byte[16]); bb.putLong(this.uuid.getMostSignificantBits()); bb.putLong(this.uuid.getLeastSignificantBits()); return Base64.encodeBase64URLSafeString(bb.array()); }
From source file:nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleProtocol.java
private byte[] encodeTimelinePin(UUID uuid, int timestamp, short duration, int icon_id, String title, String subtitle) {/*from www .jav a 2s . com*/ final short TIMELINE_PIN_LENGTH = 46; icon_id |= 0x80000000; byte attributes_count = 2; byte actions_count = 0; int attributes_length = 10 + title.getBytes().length; if (subtitle != null && !subtitle.isEmpty()) { attributes_length += 3 + subtitle.getBytes().length; attributes_count += 1; } int pin_length = TIMELINE_PIN_LENGTH + attributes_length; ByteBuffer buf = ByteBuffer.allocate(pin_length); // pin - 46 bytes buf.order(ByteOrder.BIG_ENDIAN); buf.putLong(uuid.getMostSignificantBits()); buf.putLong(uuid.getLeastSignificantBits()); buf.putLong(0); // parent buf.putLong(0); buf.order(ByteOrder.LITTLE_ENDIAN); buf.putInt(timestamp); // 32-bit timestamp buf.putShort(duration); buf.put((byte) 0x02); // type (0x02 = pin) buf.putShort((short) 0x0001); // flags 0x0001 = ? buf.put((byte) 0x01); // layout was (0x02 = pin?), 0x01 needed for subtitle but seems to do no harm if there isn't one buf.putShort((short) attributes_length); // total length of all attributes and actions in bytes buf.put(attributes_count); buf.put(actions_count); buf.put((byte) 4); // icon buf.putShort((short) 4); // length of int buf.putInt(icon_id); buf.put((byte) 1); // title buf.putShort((short) title.getBytes().length); buf.put(title.getBytes()); if (subtitle != null && !subtitle.isEmpty()) { buf.put((byte) 2); //subtitle buf.putShort((short) subtitle.getBytes().length); buf.put(subtitle.getBytes()); } return encodeBlobdb(uuid, BLOBDB_INSERT, BLOBDB_PIN, buf.array()); }
From source file:nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleProtocol.java
private byte[] encodeWeatherPin(int timestamp, String title, String subtitle, String body, String location, int iconId) { final short NOTIFICATION_PIN_LENGTH = 46; final short ACTION_LENGTH_MIN = 10; String[] parts = { title, subtitle, body, location, "test", "test" }; // Calculate length first byte actions_count = 1; short actions_length; String remove_string = "Remove"; actions_length = (short) (ACTION_LENGTH_MIN * actions_count + remove_string.getBytes().length); byte attributes_count = 3; short attributes_length = (short) (21 + actions_length); if (parts != null) { for (String s : parts) { if (s == null || s.equals("")) { continue; }//from w ww. j a va2 s . co m attributes_count++; attributes_length += (3 + s.getBytes().length); } } UUID uuid = UUID.fromString("61b22bc8-1e29-460d-a236-3fe409a43901"); short pin_length = (short) (NOTIFICATION_PIN_LENGTH + attributes_length); ByteBuffer buf = ByteBuffer.allocate(pin_length); // pin (46 bytes) buf.order(ByteOrder.BIG_ENDIAN); buf.putLong(uuid.getMostSignificantBits()); buf.putLong(uuid.getLeastSignificantBits()); buf.putLong(uuid.getMostSignificantBits()); buf.putLong(uuid.getLeastSignificantBits() | 0xff); buf.order(ByteOrder.LITTLE_ENDIAN); buf.putInt(timestamp); // 32-bit timestamp buf.putShort((short) 0); // duration buf.put((byte) 0x02); // type (0x02 = pin) buf.putShort((short) 0x0001); // flags 0x0001 = ? buf.put((byte) 0x06); // layout (0x06 = weather) buf.putShort(attributes_length); // total length of all attributes and actions in bytes buf.put(attributes_count); buf.put(actions_count); byte attribute_id = 0; // Encode Pascal-Style Strings if (parts != null) { for (String s : parts) { attribute_id++; if (s == null || s.equals("")) { continue; } int partlength = s.getBytes().length; if (partlength > 512) partlength = 512; if (attribute_id == 4) { buf.put((byte) 11); } else if (attribute_id == 5) { buf.put((byte) 25); } else if (attribute_id == 6) { buf.put((byte) 26); } else { buf.put(attribute_id); } buf.putShort((short) partlength); buf.put(s.getBytes(), 0, partlength); } } buf.put((byte) 4); // icon buf.putShort((short) 4); // length of int buf.putInt(0x80000000 | iconId); buf.put((byte) 6); // icon buf.putShort((short) 4); // length of int buf.putInt(0x80000000 | iconId); buf.put((byte) 14); // last updated buf.putShort((short) 4); // length of int buf.putInt(timestamp); // remove action buf.put((byte) 123); // action id buf.put((byte) 0x09); // remove buf.put((byte) 0x01); // number attributes buf.put((byte) 0x01); // attribute id (title) buf.putShort((short) remove_string.getBytes().length); buf.put(remove_string.getBytes()); return encodeBlobdb(uuid, BLOBDB_INSERT, BLOBDB_PIN, buf.array()); }
From source file:org.apache.geode.internal.cache.DiskInitFile.java
private void writeIFRecord(byte b, long v) { assert lock.isHeldByCurrentThread(); try {/*from w w w.jav a2 s. com*/ ByteBuffer bb = getIFWriteBuffer(OPLOG_FILE_ID_REC_SIZE); bb.put(b); bb.putLong(v); bb.put(END_OF_RECORD_ID); writeIFRecord(bb, false); // don't do stats for these small records } catch (IOException ex) { DiskAccessException dae = new DiskAccessException( LocalizedStrings.DiskInitFile_FAILED_INIT_FILE_WRITE_BECAUSE_0.toLocalizedString(ex), this.parent); if (!this.compactInProgress) { this.parent.handleDiskAccessException(dae); } throw dae; } }
From source file:nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleProtocol.java
private byte[] encodeActionResponse(UUID uuid, int iconId, String caption) { short length = (short) (29 + caption.getBytes().length); ByteBuffer buf = ByteBuffer.allocate(LENGTH_PREFIX + length); buf.order(ByteOrder.BIG_ENDIAN); buf.putShort(length);/*from w w w .j a v a2s . c o m*/ buf.putShort(ENDPOINT_NOTIFICATIONACTION); buf.put(NOTIFICATIONACTION_RESPONSE); buf.putLong(uuid.getMostSignificantBits()); buf.putLong(uuid.getLeastSignificantBits()); buf.order(ByteOrder.LITTLE_ENDIAN); buf.put(NOTIFICATIONACTION_ACK); buf.put((byte) 2); //nr of attributes buf.put((byte) 6); // icon buf.putShort((short) 4); // length buf.putInt(0x80000000 | iconId); buf.put((byte) 2); // title buf.putShort((short) caption.getBytes().length); buf.put(caption.getBytes()); return buf.array(); }
From source file:nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleProtocol.java
private byte[] encodeBlobdbNotification(int id, int timestamp, String title, String subtitle, String body, String sourceName, boolean hasHandle, NotificationType notificationType, String[] cannedReplies) { final short NOTIFICATION_PIN_LENGTH = 46; final short ACTION_LENGTH_MIN = 10; String[] parts = { title, subtitle, body }; if (notificationType == null) { notificationType = NotificationType.UNKNOWN; }// w ww . j ava 2 s. c o m int icon_id = notificationType.icon; byte color_id = notificationType.color; // Calculate length first byte actions_count; short actions_length; String dismiss_string; String open_string = "Open on phone"; String mute_string = "Mute"; String reply_string = "Reply"; if (sourceName != null) { mute_string += " " + sourceName; } byte dismiss_action_id; if (hasHandle && !"ALARMCLOCKRECEIVER".equals(sourceName)) { actions_count = 3; dismiss_string = "Dismiss"; dismiss_action_id = 0x02; actions_length = (short) (ACTION_LENGTH_MIN * actions_count + dismiss_string.getBytes().length + open_string.getBytes().length + mute_string.getBytes().length); } else { actions_count = 1; dismiss_string = "Dismiss all"; dismiss_action_id = 0x03; actions_length = (short) (ACTION_LENGTH_MIN * actions_count + dismiss_string.getBytes().length); } int replies_length = -1; if (cannedReplies != null && cannedReplies.length > 0) { actions_count++; for (String reply : cannedReplies) { replies_length += reply.getBytes().length + 1; } actions_length += ACTION_LENGTH_MIN + reply_string.getBytes().length + replies_length + 3; // 3 = attribute id (byte) + length(short) } byte attributes_count = 2; // icon short attributes_length = (short) (11 + actions_length); if (parts != null) { for (String s : parts) { if (s == null || s.equals("")) { continue; } attributes_count++; attributes_length += (3 + s.getBytes().length); } } short pin_length = (short) (NOTIFICATION_PIN_LENGTH + attributes_length); ByteBuffer buf = ByteBuffer.allocate(pin_length); // pin - 46 bytes buf.order(ByteOrder.BIG_ENDIAN); buf.putLong(GB_UUID_MASK); buf.putLong(id); buf.putLong(UUID_NOTIFICATIONS.getMostSignificantBits()); buf.putLong(UUID_NOTIFICATIONS.getLeastSignificantBits()); buf.order(ByteOrder.LITTLE_ENDIAN); buf.putInt(timestamp); // 32-bit timestamp buf.putShort((short) 0); // duration buf.put((byte) 0x01); // type (0x01 = notification) buf.putShort((short) 0x0001); // flags 0x0001 = ? buf.put((byte) 0x04); // layout (0x04 = notification?) buf.putShort(attributes_length); // total length of all attributes and actions in bytes buf.put(attributes_count); buf.put(actions_count); byte attribute_id = 0; // Encode Pascal-Style Strings if (parts != null) { for (String s : parts) { attribute_id++; if (s == null || s.equals("")) { continue; } int partlength = s.getBytes().length; if (partlength > 512) partlength = 512; buf.put(attribute_id); buf.putShort((short) partlength); buf.put(s.getBytes(), 0, partlength); } } buf.put((byte) 4); // icon buf.putShort((short) 4); // length of int buf.putInt(0x80000000 | icon_id); buf.put((byte) 28); // background_color buf.putShort((short) 1); // length of int buf.put(color_id); // dismiss action buf.put(dismiss_action_id); buf.put((byte) 0x02); // generic action, dismiss did not do anything buf.put((byte) 0x01); // number attributes buf.put((byte) 0x01); // attribute id (title) buf.putShort((short) dismiss_string.getBytes().length); buf.put(dismiss_string.getBytes()); // open and mute actions if (hasHandle && !"ALARMCLOCKRECEIVER".equals(sourceName)) { buf.put((byte) 0x01); buf.put((byte) 0x02); // generic action buf.put((byte) 0x01); // number attributes buf.put((byte) 0x01); // attribute id (title) buf.putShort((short) open_string.getBytes().length); buf.put(open_string.getBytes()); buf.put((byte) 0x04); buf.put((byte) 0x02); // generic action buf.put((byte) 0x01); // number attributes buf.put((byte) 0x01); // attribute id (title) buf.putShort((short) mute_string.getBytes().length); buf.put(mute_string.getBytes()); } if (cannedReplies != null && replies_length > 0) { buf.put((byte) 0x05); buf.put((byte) 0x03); // reply action buf.put((byte) 0x02); // number attributes buf.put((byte) 0x01); // title buf.putShort((short) reply_string.getBytes().length); buf.put(reply_string.getBytes()); buf.put((byte) 0x08); // canned replies buf.putShort((short) replies_length); for (int i = 0; i < cannedReplies.length - 1; i++) { buf.put(cannedReplies[i].getBytes()); buf.put((byte) 0x00); } // last one must not be zero terminated, else we get an additional emply reply buf.put(cannedReplies[cannedReplies.length - 1].getBytes()); } return encodeBlobdb(UUID.randomUUID(), BLOBDB_INSERT, BLOBDB_NOTIFICATION, buf.array()); }
From source file:nodomain.freeyourgadget.gadgetbridge.service.devices.pebble.PebbleProtocol.java
byte[] encodeApplicationMessageAck(UUID uuid, byte id) { if (uuid == null) { uuid = currentRunningApp;// w w w. j av a2s . co m } ByteBuffer buf = ByteBuffer.allocate(LENGTH_PREFIX + 18); // +ACK buf.order(ByteOrder.BIG_ENDIAN); buf.putShort((short) 18); buf.putShort(ENDPOINT_APPLICATIONMESSAGE); buf.put(APPLICATIONMESSAGE_ACK); buf.put(id); buf.putLong(uuid.getMostSignificantBits()); buf.putLong(uuid.getLeastSignificantBits()); return buf.array(); }