message: Finish ProvideFilesystemSupportFor
diff: @@ -1117,6 +1117,47 @@ static void ProvideFilesystemSupportFor(TF_FilesystemPluginOps* ops,
  const char* uri) {
  TF_SetFilesystemVersionMetadata(ops);
  ops->scheme = strdup(uri);
  +
  + ops->random_access_file_ops = static_cast<TF_RandomAccessFileOps*>(
  + plugin_memory_allocate(TF_RANDOM_ACCESS_FILE_OPS_SIZE));
  + ops->random_access_file_ops->cleanup = tf_random_access_file::Cleanup;
  + ops->random_access_file_ops->read = tf_random_access_file::Read;
  +
  + ops->writable_file_ops = static_cast<TF_WritableFileOps*>(
  + plugin_memory_allocate(TF_WRITABLE_FILE_OPS_SIZE));
  + ops->writable_file_ops->cleanup = tf_writable_file::Cleanup;
  + ops->writable_file_ops->append = tf_writable_file::Append;
  + ops->writable_file_ops->tell = tf_writable_file::Tell;
  + ops->writable_file_ops->flush = tf_writable_file::Flush;
  + ops->writable_file_ops->sync = tf_writable_file::Sync;
  + ops->writable_file_ops->close = tf_writable_file::Close;
  +
  + ops->read_only_memory_region_ops = static_cast<TF_ReadOnlyMemoryRegionOps*>(
  + plugin_memory_allocate(TF_READ_ONLY_MEMORY_REGION_OPS_SIZE));
  + ops->read_only_memory_region_ops->cleanup =
  + tf_read_only_memory_region::Cleanup;
  + ops->read_only_memory_region_ops->data = tf_read_only_memory_region::Data;
  + ops->read_only_memory_region_ops->length = tf_read_only_memory_region::Length;
  +
  + ops->filesystem_ops = static_cast<TF_FilesystemOps*>(
  + plugin_memory_allocate(TF_FILESYSTEM_OPS_SIZE));
  + ops->filesystem_ops->init = tf_s3_filesystem::Init;
  + ops->filesystem_ops->cleanup = tf_s3_filesystem::Cleanup;
  + ops->filesystem_ops->new_random_access_file =
  + tf_s3_filesystem::NewRandomAccessFile;
  + ops->filesystem_ops->new_writable_file = tf_s3_filesystem::NewWritableFile;
  + ops->filesystem_ops->new_appendable_file =
  + tf_s3_filesystem::NewAppendableFile;
  + ops->filesystem_ops->new_read_only_memory_region_from_file =
  + tf_s3_filesystem::NewReadOnlyMemoryRegionFromFile;
  + ops->filesystem_ops->create_dir = tf_s3_filesystem::CreateDir;
  + ops->filesystem_ops->delete_file = tf_s3_filesystem::DeleteFile;
  + ops->filesystem_ops->delete_dir = tf_s3_filesystem::DeleteDir;
  + ops->filesystem_ops->copy_file = tf_s3_filesystem::CopyFile;
  + ops->filesystem_ops->path_exists = tf_s3_filesystem::PathExists;
  + ops->filesystem_ops->get_file_size = tf_s3_filesystem::GetFileSize;
  + ops->filesystem_ops->stat = tf_s3_filesystem::Stat;
  + ops->filesystem_ops->get_children = tf_s3_filesystem::GetChildren;
  }
  void TF_InitPlugin(TF_FilesystemPluginInfo* info) {
  