code: public static BlockInStream createRemoteBlockInStream(FileSystemContext context, long blockId,
        WorkerNetAddress address, BlockInStreamSource blockSource, long blockSize,
        Protocol.OpenUfsBlockOptions ufsOptions) {
      long chunkSize =
          context.getClusterConf()
              .getBytes(PropertyKey.USER_NETWORK_READER_CHUNK_SIZE_BYTES);
      ReadRequest readRequest = ReadRequest.newBuilder().setBlockId(blockId)
          .setOpenUfsBlockOptions(ufsOptions).setChunkSize(chunkSize).buildPartial();
      DataReader.Factory factory = new GrpcDataReader.Factory(context, address,
          readRequest.toBuilder().buildPartial());
      return new BlockInStream(factory, address, blockSource, blockId, blockSize);
    }
docs: Creates a {@link BlockInStream} to read from a specific remote server. Should only be used
  in cases where the data source and method of reading is known, ie. worker - worker
  communication.
  
  @param context the file system context
  @param blockId the block id
  @param address the address of the gRPC data server
  @param blockSource the source location of the block
  @param blockSize the size of the block
  @param ufsOptions the ufs read options
  @return the {@link BlockInStream} created