virtual bool write()

in java/JavaOutputStream.h [52:83]


  virtual bool write(const char *ptr, unsigned long long numBytes) {
    jmethodID writeMethod = env->GetMethodID(
        env->FindClass("java/io/OutputStream"), "write", "([B)V");

    if (!writeMethod) {
      throw std::runtime_error("Native code failed to find "
                               "java.io.OutputStream#write(byte[]) method!");
    }

    for (unsigned long long i = 0; i < numBytes; i += MAX_BUFFER_SIZE) {
      unsigned long long chunkSize = std::min(numBytes - i, MAX_BUFFER_SIZE);

      jbyteArray byteArray = env->NewByteArray(chunkSize);
      if (!byteArray) {
        throw std::domain_error(
            "Failed to instantiate Java byte array of size: " +
            std::to_string(chunkSize));
      }

      env->SetByteArrayRegion(byteArray, 0, chunkSize, (const jbyte *)ptr);
      env->CallVoidMethod(outputStream, writeMethod, byteArray);
      env->DeleteLocalRef(byteArray);

      if (env->ExceptionCheck()) {
        return false;
      }

      ptr += chunkSize;
    }

    return true;
  }