def decodeCompactBatch()

in atlas-webapi/src/main/scala/com/netflix/atlas/webapi/PublishPayloads.scala [271:313]


  def decodeCompactBatch(
    parser: JsonParser,
    consumer: PublishConsumer,
    intern: Boolean = false
  ): Unit = {
    val strInterner = Interner.forStrings

    requireNextToken(parser, JsonToken.START_ARRAY)
    val size = nextArraySize(parser)
    val table = getOrCreateStringArray(size)
    var i = 0
    while (i < size) {
      val s = nextString(parser)
      table(i) = if (intern) strInterner.intern(s) else s
      i += 1
    }

    val numDatapointTuples = nextInt(parser)
    i = 0
    while (i < numDatapointTuples) {
      val idRaw = ItemId(nextString(parser))
      val id = if (intern) TaggedItem.internId(idRaw) else idRaw

      val numTags = nextArraySize(parser)
      val tagsArray = new Array[String](2 * numTags)
      var j = 0
      while (j < numTags) {
        val k = table(nextInt(parser))
        val v = table(nextInt(parser))
        tagsArray(2 * j) = k
        tagsArray(2 * j + 1) = v
        j += 1
      }
      val tagMap = SortedTagMap.createUnsafe(tagsArray, tagsArray.length)
      val tags = if (intern) TaggedItem.internTagsShallow(tagMap) else tagMap

      val timestamp = nextLong(parser)
      val value = getValue(parser)

      consumer.consume(id, tags, timestamp, value)
      i += 1
    }
  }