public void handle()

in folsom/src/main/java/com/spotify/folsom/client/binary/MultigetRequest.java [102:135]


  public void handle(BinaryResponse replies, final HostAndPort server) throws IOException {
    final int size = keys.size();

    final List<GetResult<byte[]>> result = new ArrayList<>(size);
    for (int i = 0; i < size; i++) {
      result.add(null);
    }

    int expectedOpaque = opaque;

    for (final ResponsePacket reply : replies) {
      if (OpCode.getKind(reply.opcode) != OpCode.GET) {
        throw new IOException("Unmatched response");
      }
      final int opaque = reply.opaque & 0xFFFFFF00;
      if (opaque != expectedOpaque) {
        throw new IOException("messages out of order for " + getClass().getSimpleName());
      }
      final int sequenceCounter = reply.opaque & 0x000000FF;
      int index = size - sequenceCounter - 1;
      if (index < 0) {
        throw new IOException("Invalid index: " + index);
      }

      if (reply.status == MemcacheStatus.OK) {
        result.set(index, GetResult.success(reply.value, reply.cas, reply.flags));
      } else if (reply.status == MemcacheStatus.KEY_NOT_FOUND) {
        // No need to do anything
      } else {
        throw new IOException("Unexpected response: " + reply.status);
      }
    }
    succeed(result);
  }