/**
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for
 * license information.
 *
 * Code generated by Microsoft (R) AutoRest Code Generator.
 */

package com.microsoft.azure.batch.protocol;

import com.microsoft.azure.batch.protocol.models.BatchErrorException;
import com.microsoft.azure.batch.protocol.models.FileDeleteFromComputeNodeHeaders;
import com.microsoft.azure.batch.protocol.models.FileDeleteFromComputeNodeOptions;
import com.microsoft.azure.batch.protocol.models.FileDeleteFromTaskHeaders;
import com.microsoft.azure.batch.protocol.models.FileDeleteFromTaskOptions;
import com.microsoft.azure.batch.protocol.models.FileGetFromComputeNodeHeaders;
import com.microsoft.azure.batch.protocol.models.FileGetFromComputeNodeOptions;
import com.microsoft.azure.batch.protocol.models.FileGetFromTaskHeaders;
import com.microsoft.azure.batch.protocol.models.FileGetFromTaskOptions;
import com.microsoft.azure.batch.protocol.models.FileGetPropertiesFromComputeNodeHeaders;
import com.microsoft.azure.batch.protocol.models.FileGetPropertiesFromComputeNodeOptions;
import com.microsoft.azure.batch.protocol.models.FileGetPropertiesFromTaskHeaders;
import com.microsoft.azure.batch.protocol.models.FileGetPropertiesFromTaskOptions;
import com.microsoft.azure.batch.protocol.models.FileListFromComputeNodeHeaders;
import com.microsoft.azure.batch.protocol.models.FileListFromComputeNodeNextOptions;
import com.microsoft.azure.batch.protocol.models.FileListFromComputeNodeOptions;
import com.microsoft.azure.batch.protocol.models.FileListFromTaskHeaders;
import com.microsoft.azure.batch.protocol.models.FileListFromTaskNextOptions;
import com.microsoft.azure.batch.protocol.models.FileListFromTaskOptions;
import com.microsoft.azure.batch.protocol.models.NodeFile;
import com.microsoft.azure.ListOperationCallback;
import com.microsoft.azure.Page;
import com.microsoft.azure.PagedList;
import com.microsoft.rest.ServiceCallback;
import com.microsoft.rest.ServiceFuture;
import com.microsoft.rest.ServiceResponseWithHeaders;
import java.io.InputStream;
import java.io.IOException;
import java.util.List;
import rx.Observable;

// CUSTOM IMPORT
import java.io.OutputStream;

/**
 * An instance of this class provides access to all the operations defined
 * in Files.
 */
public interface Files {
    // CUSTOM METHOD
    /**
     * Returns the content of the specified task file.
     *
     * @param jobId
     *            The ID of the job that contains the task.
     * @param taskId
     *            The ID of the task whose file you want to retrieve.
     * @param filePath
     *            The path to the task file that you want to get the content of.
     * @param outputStream
     *            The OutputStream object which data will be written to if
     *            successful.
     * @throws IllegalArgumentException
     *             thrown if parameters fail the validation
     * @throws BatchErrorException
     *             thrown if the request is rejected by server
     * @throws RuntimeException
     *             all other wrapped checked exceptions if the request fails to be
     *             sent
     */
    void getFromTask(String jobId, String taskId, String filePath, OutputStream outputStream);

    // CUSTOM METHOD
    /**
     * Returns the content of the specified task file.
     *
     * @param jobId
     *            The ID of the job that contains the task.
     * @param taskId
     *            The ID of the task whose file you want to retrieve.
     * @param filePath
     *            The path to the task file that you want to get the content of.
     * @param fileGetFromTaskOptions
     *            Additional parameters for the operation
     * @param outputStream
     *            The OutputStream object which data will be written to if
     *            successful.
     * @throws IllegalArgumentException
     *             thrown if parameters fail the validation
     * @throws BatchErrorException
     *             thrown if the request is rejected by server
     * @throws RuntimeException
     *             all other wrapped checked exceptions if the request fails to be
     *             sent
     */
    void getFromTask(String jobId, String taskId, String filePath, FileGetFromTaskOptions fileGetFromTaskOptions,
                     OutputStream outputStream);

    // CUSTOM METHOD
    /**
     * Returns the content of the specified task file.
     *
     * @param poolId
     *            The ID of the pool that contains the compute node.
     * @param nodeId
     *            The ID of the compute node that contains the file.
     * @param filePath
     *            The path to the compute node file that you want to get the content
     *            of.
     * @param outputStream
     *            The OutputStream object which data will be written to if
     *            successful.
     * @throws IllegalArgumentException
     *             thrown if parameters fail the validation
     * @throws BatchErrorException
     *             thrown if the request is rejected by server
     * @throws RuntimeException
     *             all other wrapped checked exceptions if the request fails to be
     *             sent
     */
    void getFromComputeNode(String poolId, String nodeId, String filePath, OutputStream outputStream);

    // CUSTOM METHOD
    /**
     * Returns the content of the specified compute node file.
     *
     * @param poolId
     *            The ID of the pool that contains the compute node.
     * @param nodeId
     *            The ID of the compute node that contains the file.
     * @param filePath
     *            The path to the compute node file that you want to get the content
     *            of.
     * @param fileGetFromComputeNodeOptions
     *            Additional parameters for the operation
     * @param outputStream
     *            The OutputStream object which data will be written to if
     *            successful.
     * @throws IllegalArgumentException
     *             thrown if parameters fail the validation
     * @throws BatchErrorException
     *             thrown if the request is rejected by server
     * @throws RuntimeException
     *             all other wrapped checked exceptions if the request fails to be
     *             sent
     */
    void getFromComputeNode(String poolId, String nodeId, String filePath,
                            FileGetFromComputeNodeOptions fileGetFromComputeNodeOptions, OutputStream outputStream);

    /**
     * Deletes the specified Task file from the Compute Node where the Task ran.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to delete.
     * @param filePath The path to the Task file or directory that you want to delete.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @throws BatchErrorException thrown if the request is rejected by server
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
     */
    void deleteFromTask(String jobId, String taskId, String filePath);

    /**
     * Deletes the specified Task file from the Compute Node where the Task ran.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to delete.
     * @param filePath The path to the Task file or directory that you want to delete.
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceFuture} object
     */
    ServiceFuture<Void> deleteFromTaskAsync(String jobId, String taskId, String filePath, final ServiceCallback<Void> serviceCallback);

    /**
     * Deletes the specified Task file from the Compute Node where the Task ran.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to delete.
     * @param filePath The path to the Task file or directory that you want to delete.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<Void> deleteFromTaskAsync(String jobId, String taskId, String filePath);

    /**
     * Deletes the specified Task file from the Compute Node where the Task ran.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to delete.
     * @param filePath The path to the Task file or directory that you want to delete.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, FileDeleteFromTaskHeaders>> deleteFromTaskWithServiceResponseAsync(String jobId, String taskId, String filePath);
    /**
     * Deletes the specified Task file from the Compute Node where the Task ran.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to delete.
     * @param filePath The path to the Task file or directory that you want to delete.
     * @param recursive Whether to delete children of a directory. If the filePath parameter represents a directory instead of a file, you can set recursive to true to delete the directory and all of the files and subdirectories in it. If recursive is false then the directory must be empty or deletion will fail.
     * @param fileDeleteFromTaskOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @throws BatchErrorException thrown if the request is rejected by server
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
     */
    void deleteFromTask(String jobId, String taskId, String filePath, Boolean recursive, FileDeleteFromTaskOptions fileDeleteFromTaskOptions);

    /**
     * Deletes the specified Task file from the Compute Node where the Task ran.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to delete.
     * @param filePath The path to the Task file or directory that you want to delete.
     * @param recursive Whether to delete children of a directory. If the filePath parameter represents a directory instead of a file, you can set recursive to true to delete the directory and all of the files and subdirectories in it. If recursive is false then the directory must be empty or deletion will fail.
     * @param fileDeleteFromTaskOptions Additional parameters for the operation
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceFuture} object
     */
    ServiceFuture<Void> deleteFromTaskAsync(String jobId, String taskId, String filePath, Boolean recursive, FileDeleteFromTaskOptions fileDeleteFromTaskOptions, final ServiceCallback<Void> serviceCallback);

    /**
     * Deletes the specified Task file from the Compute Node where the Task ran.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to delete.
     * @param filePath The path to the Task file or directory that you want to delete.
     * @param recursive Whether to delete children of a directory. If the filePath parameter represents a directory instead of a file, you can set recursive to true to delete the directory and all of the files and subdirectories in it. If recursive is false then the directory must be empty or deletion will fail.
     * @param fileDeleteFromTaskOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<Void> deleteFromTaskAsync(String jobId, String taskId, String filePath, Boolean recursive, FileDeleteFromTaskOptions fileDeleteFromTaskOptions);

    /**
     * Deletes the specified Task file from the Compute Node where the Task ran.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to delete.
     * @param filePath The path to the Task file or directory that you want to delete.
     * @param recursive Whether to delete children of a directory. If the filePath parameter represents a directory instead of a file, you can set recursive to true to delete the directory and all of the files and subdirectories in it. If recursive is false then the directory must be empty or deletion will fail.
     * @param fileDeleteFromTaskOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, FileDeleteFromTaskHeaders>> deleteFromTaskWithServiceResponseAsync(String jobId, String taskId, String filePath, Boolean recursive, FileDeleteFromTaskOptions fileDeleteFromTaskOptions);

    /**
     * Returns the content of the specified Task file.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to retrieve.
     * @param filePath The path to the Task file that you want to get the content of.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @throws BatchErrorException thrown if the request is rejected by server
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
     * @return the InputStream object if successful.
     */
    InputStream getFromTask(String jobId, String taskId, String filePath);

    /**
     * Returns the content of the specified Task file.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to retrieve.
     * @param filePath The path to the Task file that you want to get the content of.
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceFuture} object
     */
    ServiceFuture<InputStream> getFromTaskAsync(String jobId, String taskId, String filePath, final ServiceCallback<InputStream> serviceCallback);

    /**
     * Returns the content of the specified Task file.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to retrieve.
     * @param filePath The path to the Task file that you want to get the content of.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the InputStream object
     */
    Observable<InputStream> getFromTaskAsync(String jobId, String taskId, String filePath);

    /**
     * Returns the content of the specified Task file.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to retrieve.
     * @param filePath The path to the Task file that you want to get the content of.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the InputStream object
     */
    Observable<ServiceResponseWithHeaders<InputStream, FileGetFromTaskHeaders>> getFromTaskWithServiceResponseAsync(String jobId, String taskId, String filePath);
    /**
     * Returns the content of the specified Task file.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to retrieve.
     * @param filePath The path to the Task file that you want to get the content of.
     * @param fileGetFromTaskOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @throws BatchErrorException thrown if the request is rejected by server
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
     * @return the InputStream object if successful.
     */
    InputStream getFromTask(String jobId, String taskId, String filePath, FileGetFromTaskOptions fileGetFromTaskOptions);

    /**
     * Returns the content of the specified Task file.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to retrieve.
     * @param filePath The path to the Task file that you want to get the content of.
     * @param fileGetFromTaskOptions Additional parameters for the operation
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceFuture} object
     */
    ServiceFuture<InputStream> getFromTaskAsync(String jobId, String taskId, String filePath, FileGetFromTaskOptions fileGetFromTaskOptions, final ServiceCallback<InputStream> serviceCallback);

    /**
     * Returns the content of the specified Task file.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to retrieve.
     * @param filePath The path to the Task file that you want to get the content of.
     * @param fileGetFromTaskOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the InputStream object
     */
    Observable<InputStream> getFromTaskAsync(String jobId, String taskId, String filePath, FileGetFromTaskOptions fileGetFromTaskOptions);

    /**
     * Returns the content of the specified Task file.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to retrieve.
     * @param filePath The path to the Task file that you want to get the content of.
     * @param fileGetFromTaskOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the InputStream object
     */
    Observable<ServiceResponseWithHeaders<InputStream, FileGetFromTaskHeaders>> getFromTaskWithServiceResponseAsync(String jobId, String taskId, String filePath, FileGetFromTaskOptions fileGetFromTaskOptions);

    /**
     * Gets the properties of the specified Task file.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to get the properties of.
     * @param filePath The path to the Task file that you want to get the properties of.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @throws BatchErrorException thrown if the request is rejected by server
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
     */
    void getPropertiesFromTask(String jobId, String taskId, String filePath);

    /**
     * Gets the properties of the specified Task file.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to get the properties of.
     * @param filePath The path to the Task file that you want to get the properties of.
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceFuture} object
     */
    ServiceFuture<Void> getPropertiesFromTaskAsync(String jobId, String taskId, String filePath, final ServiceCallback<Void> serviceCallback);

    /**
     * Gets the properties of the specified Task file.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to get the properties of.
     * @param filePath The path to the Task file that you want to get the properties of.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<Void> getPropertiesFromTaskAsync(String jobId, String taskId, String filePath);

    /**
     * Gets the properties of the specified Task file.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to get the properties of.
     * @param filePath The path to the Task file that you want to get the properties of.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, FileGetPropertiesFromTaskHeaders>> getPropertiesFromTaskWithServiceResponseAsync(String jobId, String taskId, String filePath);
    /**
     * Gets the properties of the specified Task file.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to get the properties of.
     * @param filePath The path to the Task file that you want to get the properties of.
     * @param fileGetPropertiesFromTaskOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @throws BatchErrorException thrown if the request is rejected by server
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
     */
    void getPropertiesFromTask(String jobId, String taskId, String filePath, FileGetPropertiesFromTaskOptions fileGetPropertiesFromTaskOptions);

    /**
     * Gets the properties of the specified Task file.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to get the properties of.
     * @param filePath The path to the Task file that you want to get the properties of.
     * @param fileGetPropertiesFromTaskOptions Additional parameters for the operation
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceFuture} object
     */
    ServiceFuture<Void> getPropertiesFromTaskAsync(String jobId, String taskId, String filePath, FileGetPropertiesFromTaskOptions fileGetPropertiesFromTaskOptions, final ServiceCallback<Void> serviceCallback);

    /**
     * Gets the properties of the specified Task file.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to get the properties of.
     * @param filePath The path to the Task file that you want to get the properties of.
     * @param fileGetPropertiesFromTaskOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<Void> getPropertiesFromTaskAsync(String jobId, String taskId, String filePath, FileGetPropertiesFromTaskOptions fileGetPropertiesFromTaskOptions);

    /**
     * Gets the properties of the specified Task file.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose file you want to get the properties of.
     * @param filePath The path to the Task file that you want to get the properties of.
     * @param fileGetPropertiesFromTaskOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, FileGetPropertiesFromTaskHeaders>> getPropertiesFromTaskWithServiceResponseAsync(String jobId, String taskId, String filePath, FileGetPropertiesFromTaskOptions fileGetPropertiesFromTaskOptions);

    /**
     * Deletes the specified file from the Compute Node.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node from which you want to delete the file.
     * @param filePath The path to the file or directory that you want to delete.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @throws BatchErrorException thrown if the request is rejected by server
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
     */
    void deleteFromComputeNode(String poolId, String nodeId, String filePath);

    /**
     * Deletes the specified file from the Compute Node.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node from which you want to delete the file.
     * @param filePath The path to the file or directory that you want to delete.
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceFuture} object
     */
    ServiceFuture<Void> deleteFromComputeNodeAsync(String poolId, String nodeId, String filePath, final ServiceCallback<Void> serviceCallback);

    /**
     * Deletes the specified file from the Compute Node.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node from which you want to delete the file.
     * @param filePath The path to the file or directory that you want to delete.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<Void> deleteFromComputeNodeAsync(String poolId, String nodeId, String filePath);

    /**
     * Deletes the specified file from the Compute Node.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node from which you want to delete the file.
     * @param filePath The path to the file or directory that you want to delete.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, FileDeleteFromComputeNodeHeaders>> deleteFromComputeNodeWithServiceResponseAsync(String poolId, String nodeId, String filePath);
    /**
     * Deletes the specified file from the Compute Node.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node from which you want to delete the file.
     * @param filePath The path to the file or directory that you want to delete.
     * @param recursive Whether to delete children of a directory. If the filePath parameter represents a directory instead of a file, you can set recursive to true to delete the directory and all of the files and subdirectories in it. If recursive is false then the directory must be empty or deletion will fail.
     * @param fileDeleteFromComputeNodeOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @throws BatchErrorException thrown if the request is rejected by server
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
     */
    void deleteFromComputeNode(String poolId, String nodeId, String filePath, Boolean recursive, FileDeleteFromComputeNodeOptions fileDeleteFromComputeNodeOptions);

    /**
     * Deletes the specified file from the Compute Node.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node from which you want to delete the file.
     * @param filePath The path to the file or directory that you want to delete.
     * @param recursive Whether to delete children of a directory. If the filePath parameter represents a directory instead of a file, you can set recursive to true to delete the directory and all of the files and subdirectories in it. If recursive is false then the directory must be empty or deletion will fail.
     * @param fileDeleteFromComputeNodeOptions Additional parameters for the operation
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceFuture} object
     */
    ServiceFuture<Void> deleteFromComputeNodeAsync(String poolId, String nodeId, String filePath, Boolean recursive, FileDeleteFromComputeNodeOptions fileDeleteFromComputeNodeOptions, final ServiceCallback<Void> serviceCallback);

    /**
     * Deletes the specified file from the Compute Node.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node from which you want to delete the file.
     * @param filePath The path to the file or directory that you want to delete.
     * @param recursive Whether to delete children of a directory. If the filePath parameter represents a directory instead of a file, you can set recursive to true to delete the directory and all of the files and subdirectories in it. If recursive is false then the directory must be empty or deletion will fail.
     * @param fileDeleteFromComputeNodeOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<Void> deleteFromComputeNodeAsync(String poolId, String nodeId, String filePath, Boolean recursive, FileDeleteFromComputeNodeOptions fileDeleteFromComputeNodeOptions);

    /**
     * Deletes the specified file from the Compute Node.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node from which you want to delete the file.
     * @param filePath The path to the file or directory that you want to delete.
     * @param recursive Whether to delete children of a directory. If the filePath parameter represents a directory instead of a file, you can set recursive to true to delete the directory and all of the files and subdirectories in it. If recursive is false then the directory must be empty or deletion will fail.
     * @param fileDeleteFromComputeNodeOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, FileDeleteFromComputeNodeHeaders>> deleteFromComputeNodeWithServiceResponseAsync(String poolId, String nodeId, String filePath, Boolean recursive, FileDeleteFromComputeNodeOptions fileDeleteFromComputeNodeOptions);

    /**
     * Returns the content of the specified Compute Node file.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node that contains the file.
     * @param filePath The path to the Compute Node file that you want to get the content of.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @throws BatchErrorException thrown if the request is rejected by server
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
     * @return the InputStream object if successful.
     */
    InputStream getFromComputeNode(String poolId, String nodeId, String filePath);

    /**
     * Returns the content of the specified Compute Node file.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node that contains the file.
     * @param filePath The path to the Compute Node file that you want to get the content of.
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceFuture} object
     */
    ServiceFuture<InputStream> getFromComputeNodeAsync(String poolId, String nodeId, String filePath, final ServiceCallback<InputStream> serviceCallback);

    /**
     * Returns the content of the specified Compute Node file.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node that contains the file.
     * @param filePath The path to the Compute Node file that you want to get the content of.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the InputStream object
     */
    Observable<InputStream> getFromComputeNodeAsync(String poolId, String nodeId, String filePath);

    /**
     * Returns the content of the specified Compute Node file.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node that contains the file.
     * @param filePath The path to the Compute Node file that you want to get the content of.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the InputStream object
     */
    Observable<ServiceResponseWithHeaders<InputStream, FileGetFromComputeNodeHeaders>> getFromComputeNodeWithServiceResponseAsync(String poolId, String nodeId, String filePath);
    /**
     * Returns the content of the specified Compute Node file.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node that contains the file.
     * @param filePath The path to the Compute Node file that you want to get the content of.
     * @param fileGetFromComputeNodeOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @throws BatchErrorException thrown if the request is rejected by server
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
     * @return the InputStream object if successful.
     */
    InputStream getFromComputeNode(String poolId, String nodeId, String filePath, FileGetFromComputeNodeOptions fileGetFromComputeNodeOptions);

    /**
     * Returns the content of the specified Compute Node file.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node that contains the file.
     * @param filePath The path to the Compute Node file that you want to get the content of.
     * @param fileGetFromComputeNodeOptions Additional parameters for the operation
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceFuture} object
     */
    ServiceFuture<InputStream> getFromComputeNodeAsync(String poolId, String nodeId, String filePath, FileGetFromComputeNodeOptions fileGetFromComputeNodeOptions, final ServiceCallback<InputStream> serviceCallback);

    /**
     * Returns the content of the specified Compute Node file.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node that contains the file.
     * @param filePath The path to the Compute Node file that you want to get the content of.
     * @param fileGetFromComputeNodeOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the InputStream object
     */
    Observable<InputStream> getFromComputeNodeAsync(String poolId, String nodeId, String filePath, FileGetFromComputeNodeOptions fileGetFromComputeNodeOptions);

    /**
     * Returns the content of the specified Compute Node file.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node that contains the file.
     * @param filePath The path to the Compute Node file that you want to get the content of.
     * @param fileGetFromComputeNodeOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the InputStream object
     */
    Observable<ServiceResponseWithHeaders<InputStream, FileGetFromComputeNodeHeaders>> getFromComputeNodeWithServiceResponseAsync(String poolId, String nodeId, String filePath, FileGetFromComputeNodeOptions fileGetFromComputeNodeOptions);

    /**
     * Gets the properties of the specified Compute Node file.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node that contains the file.
     * @param filePath The path to the Compute Node file that you want to get the properties of.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @throws BatchErrorException thrown if the request is rejected by server
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
     */
    void getPropertiesFromComputeNode(String poolId, String nodeId, String filePath);

    /**
     * Gets the properties of the specified Compute Node file.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node that contains the file.
     * @param filePath The path to the Compute Node file that you want to get the properties of.
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceFuture} object
     */
    ServiceFuture<Void> getPropertiesFromComputeNodeAsync(String poolId, String nodeId, String filePath, final ServiceCallback<Void> serviceCallback);

    /**
     * Gets the properties of the specified Compute Node file.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node that contains the file.
     * @param filePath The path to the Compute Node file that you want to get the properties of.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<Void> getPropertiesFromComputeNodeAsync(String poolId, String nodeId, String filePath);

    /**
     * Gets the properties of the specified Compute Node file.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node that contains the file.
     * @param filePath The path to the Compute Node file that you want to get the properties of.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, FileGetPropertiesFromComputeNodeHeaders>> getPropertiesFromComputeNodeWithServiceResponseAsync(String poolId, String nodeId, String filePath);
    /**
     * Gets the properties of the specified Compute Node file.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node that contains the file.
     * @param filePath The path to the Compute Node file that you want to get the properties of.
     * @param fileGetPropertiesFromComputeNodeOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @throws BatchErrorException thrown if the request is rejected by server
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
     */
    void getPropertiesFromComputeNode(String poolId, String nodeId, String filePath, FileGetPropertiesFromComputeNodeOptions fileGetPropertiesFromComputeNodeOptions);

    /**
     * Gets the properties of the specified Compute Node file.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node that contains the file.
     * @param filePath The path to the Compute Node file that you want to get the properties of.
     * @param fileGetPropertiesFromComputeNodeOptions Additional parameters for the operation
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceFuture} object
     */
    ServiceFuture<Void> getPropertiesFromComputeNodeAsync(String poolId, String nodeId, String filePath, FileGetPropertiesFromComputeNodeOptions fileGetPropertiesFromComputeNodeOptions, final ServiceCallback<Void> serviceCallback);

    /**
     * Gets the properties of the specified Compute Node file.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node that contains the file.
     * @param filePath The path to the Compute Node file that you want to get the properties of.
     * @param fileGetPropertiesFromComputeNodeOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<Void> getPropertiesFromComputeNodeAsync(String poolId, String nodeId, String filePath, FileGetPropertiesFromComputeNodeOptions fileGetPropertiesFromComputeNodeOptions);

    /**
     * Gets the properties of the specified Compute Node file.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node that contains the file.
     * @param filePath The path to the Compute Node file that you want to get the properties of.
     * @param fileGetPropertiesFromComputeNodeOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceResponseWithHeaders} object if successful.
     */
    Observable<ServiceResponseWithHeaders<Void, FileGetPropertiesFromComputeNodeHeaders>> getPropertiesFromComputeNodeWithServiceResponseAsync(String poolId, String nodeId, String filePath, FileGetPropertiesFromComputeNodeOptions fileGetPropertiesFromComputeNodeOptions);

    /**
     * Lists the files in a Task's directory on its Compute Node.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose files you want to list.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @throws BatchErrorException thrown if the request is rejected by server
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
     * @return the PagedList&lt;NodeFile&gt; object if successful.
     */
    PagedList<NodeFile> listFromTask(final String jobId, final String taskId);

    /**
     * Lists the files in a Task's directory on its Compute Node.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose files you want to list.
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceFuture} object
     */
    ServiceFuture<List<NodeFile>> listFromTaskAsync(final String jobId, final String taskId, final ListOperationCallback<NodeFile> serviceCallback);

    /**
     * Lists the files in a Task's directory on its Compute Node.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose files you want to list.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the PagedList&lt;NodeFile&gt; object
     */
    Observable<Page<NodeFile>> listFromTaskAsync(final String jobId, final String taskId);

    /**
     * Lists the files in a Task's directory on its Compute Node.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose files you want to list.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the PagedList&lt;NodeFile&gt; object
     */
    Observable<ServiceResponseWithHeaders<Page<NodeFile>, FileListFromTaskHeaders>> listFromTaskWithServiceResponseAsync(final String jobId, final String taskId);
    /**
     * Lists the files in a Task's directory on its Compute Node.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose files you want to list.
     * @param recursive Whether to list children of the Task directory. This parameter can be used in combination with the filter parameter to list specific type of files.
     * @param fileListFromTaskOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @throws BatchErrorException thrown if the request is rejected by server
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
     * @return the PagedList&lt;NodeFile&gt; object if successful.
     */
    PagedList<NodeFile> listFromTask(final String jobId, final String taskId, final Boolean recursive, final FileListFromTaskOptions fileListFromTaskOptions);

    /**
     * Lists the files in a Task's directory on its Compute Node.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose files you want to list.
     * @param recursive Whether to list children of the Task directory. This parameter can be used in combination with the filter parameter to list specific type of files.
     * @param fileListFromTaskOptions Additional parameters for the operation
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceFuture} object
     */
    ServiceFuture<List<NodeFile>> listFromTaskAsync(final String jobId, final String taskId, final Boolean recursive, final FileListFromTaskOptions fileListFromTaskOptions, final ListOperationCallback<NodeFile> serviceCallback);

    /**
     * Lists the files in a Task's directory on its Compute Node.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose files you want to list.
     * @param recursive Whether to list children of the Task directory. This parameter can be used in combination with the filter parameter to list specific type of files.
     * @param fileListFromTaskOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the PagedList&lt;NodeFile&gt; object
     */
    Observable<Page<NodeFile>> listFromTaskAsync(final String jobId, final String taskId, final Boolean recursive, final FileListFromTaskOptions fileListFromTaskOptions);

    /**
     * Lists the files in a Task's directory on its Compute Node.
     *
     * @param jobId The ID of the Job that contains the Task.
     * @param taskId The ID of the Task whose files you want to list.
     * @param recursive Whether to list children of the Task directory. This parameter can be used in combination with the filter parameter to list specific type of files.
     * @param fileListFromTaskOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the PagedList&lt;NodeFile&gt; object
     */
    Observable<ServiceResponseWithHeaders<Page<NodeFile>, FileListFromTaskHeaders>> listFromTaskWithServiceResponseAsync(final String jobId, final String taskId, final Boolean recursive, final FileListFromTaskOptions fileListFromTaskOptions);

    /**
     * Lists all of the files in Task directories on the specified Compute Node.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node whose files you want to list.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @throws BatchErrorException thrown if the request is rejected by server
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
     * @return the PagedList&lt;NodeFile&gt; object if successful.
     */
    PagedList<NodeFile> listFromComputeNode(final String poolId, final String nodeId);

    /**
     * Lists all of the files in Task directories on the specified Compute Node.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node whose files you want to list.
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceFuture} object
     */
    ServiceFuture<List<NodeFile>> listFromComputeNodeAsync(final String poolId, final String nodeId, final ListOperationCallback<NodeFile> serviceCallback);

    /**
     * Lists all of the files in Task directories on the specified Compute Node.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node whose files you want to list.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the PagedList&lt;NodeFile&gt; object
     */
    Observable<Page<NodeFile>> listFromComputeNodeAsync(final String poolId, final String nodeId);

    /**
     * Lists all of the files in Task directories on the specified Compute Node.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node whose files you want to list.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the PagedList&lt;NodeFile&gt; object
     */
    Observable<ServiceResponseWithHeaders<Page<NodeFile>, FileListFromComputeNodeHeaders>> listFromComputeNodeWithServiceResponseAsync(final String poolId, final String nodeId);
    /**
     * Lists all of the files in Task directories on the specified Compute Node.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node whose files you want to list.
     * @param recursive Whether to list children of a directory.
     * @param fileListFromComputeNodeOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @throws BatchErrorException thrown if the request is rejected by server
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
     * @return the PagedList&lt;NodeFile&gt; object if successful.
     */
    PagedList<NodeFile> listFromComputeNode(final String poolId, final String nodeId, final Boolean recursive, final FileListFromComputeNodeOptions fileListFromComputeNodeOptions);

    /**
     * Lists all of the files in Task directories on the specified Compute Node.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node whose files you want to list.
     * @param recursive Whether to list children of a directory.
     * @param fileListFromComputeNodeOptions Additional parameters for the operation
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceFuture} object
     */
    ServiceFuture<List<NodeFile>> listFromComputeNodeAsync(final String poolId, final String nodeId, final Boolean recursive, final FileListFromComputeNodeOptions fileListFromComputeNodeOptions, final ListOperationCallback<NodeFile> serviceCallback);

    /**
     * Lists all of the files in Task directories on the specified Compute Node.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node whose files you want to list.
     * @param recursive Whether to list children of a directory.
     * @param fileListFromComputeNodeOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the PagedList&lt;NodeFile&gt; object
     */
    Observable<Page<NodeFile>> listFromComputeNodeAsync(final String poolId, final String nodeId, final Boolean recursive, final FileListFromComputeNodeOptions fileListFromComputeNodeOptions);

    /**
     * Lists all of the files in Task directories on the specified Compute Node.
     *
     * @param poolId The ID of the Pool that contains the Compute Node.
     * @param nodeId The ID of the Compute Node whose files you want to list.
     * @param recursive Whether to list children of a directory.
     * @param fileListFromComputeNodeOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the PagedList&lt;NodeFile&gt; object
     */
    Observable<ServiceResponseWithHeaders<Page<NodeFile>, FileListFromComputeNodeHeaders>> listFromComputeNodeWithServiceResponseAsync(final String poolId, final String nodeId, final Boolean recursive, final FileListFromComputeNodeOptions fileListFromComputeNodeOptions);

    /**
     * Lists the files in a Task's directory on its Compute Node.
     *
     * @param nextPageLink The NextLink from the previous successful call to List operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @throws BatchErrorException thrown if the request is rejected by server
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
     * @return the PagedList&lt;NodeFile&gt; object if successful.
     */
    PagedList<NodeFile> listFromTaskNext(final String nextPageLink);

    /**
     * Lists the files in a Task's directory on its Compute Node.
     *
     * @param nextPageLink The NextLink from the previous successful call to List operation.
     * @param serviceFuture the ServiceFuture object tracking the Retrofit calls
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceFuture} object
     */
    ServiceFuture<List<NodeFile>> listFromTaskNextAsync(final String nextPageLink, final ServiceFuture<List<NodeFile>> serviceFuture, final ListOperationCallback<NodeFile> serviceCallback);

    /**
     * Lists the files in a Task's directory on its Compute Node.
     *
     * @param nextPageLink The NextLink from the previous successful call to List operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the PagedList&lt;NodeFile&gt; object
     */
    Observable<Page<NodeFile>> listFromTaskNextAsync(final String nextPageLink);

    /**
     * Lists the files in a Task's directory on its Compute Node.
     *
     * @param nextPageLink The NextLink from the previous successful call to List operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the PagedList&lt;NodeFile&gt; object
     */
    Observable<ServiceResponseWithHeaders<Page<NodeFile>, FileListFromTaskHeaders>> listFromTaskNextWithServiceResponseAsync(final String nextPageLink);
    /**
     * Lists the files in a Task's directory on its Compute Node.
     *
     * @param nextPageLink The NextLink from the previous successful call to List operation.
     * @param fileListFromTaskNextOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @throws BatchErrorException thrown if the request is rejected by server
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
     * @return the PagedList&lt;NodeFile&gt; object if successful.
     */
    PagedList<NodeFile> listFromTaskNext(final String nextPageLink, final FileListFromTaskNextOptions fileListFromTaskNextOptions);

    /**
     * Lists the files in a Task's directory on its Compute Node.
     *
     * @param nextPageLink The NextLink from the previous successful call to List operation.
     * @param fileListFromTaskNextOptions Additional parameters for the operation
     * @param serviceFuture the ServiceFuture object tracking the Retrofit calls
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceFuture} object
     */
    ServiceFuture<List<NodeFile>> listFromTaskNextAsync(final String nextPageLink, final FileListFromTaskNextOptions fileListFromTaskNextOptions, final ServiceFuture<List<NodeFile>> serviceFuture, final ListOperationCallback<NodeFile> serviceCallback);

    /**
     * Lists the files in a Task's directory on its Compute Node.
     *
     * @param nextPageLink The NextLink from the previous successful call to List operation.
     * @param fileListFromTaskNextOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the PagedList&lt;NodeFile&gt; object
     */
    Observable<Page<NodeFile>> listFromTaskNextAsync(final String nextPageLink, final FileListFromTaskNextOptions fileListFromTaskNextOptions);

    /**
     * Lists the files in a Task's directory on its Compute Node.
     *
     * @param nextPageLink The NextLink from the previous successful call to List operation.
     * @param fileListFromTaskNextOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the PagedList&lt;NodeFile&gt; object
     */
    Observable<ServiceResponseWithHeaders<Page<NodeFile>, FileListFromTaskHeaders>> listFromTaskNextWithServiceResponseAsync(final String nextPageLink, final FileListFromTaskNextOptions fileListFromTaskNextOptions);

    /**
     * Lists all of the files in Task directories on the specified Compute Node.
     *
     * @param nextPageLink The NextLink from the previous successful call to List operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @throws BatchErrorException thrown if the request is rejected by server
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
     * @return the PagedList&lt;NodeFile&gt; object if successful.
     */
    PagedList<NodeFile> listFromComputeNodeNext(final String nextPageLink);

    /**
     * Lists all of the files in Task directories on the specified Compute Node.
     *
     * @param nextPageLink The NextLink from the previous successful call to List operation.
     * @param serviceFuture the ServiceFuture object tracking the Retrofit calls
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceFuture} object
     */
    ServiceFuture<List<NodeFile>> listFromComputeNodeNextAsync(final String nextPageLink, final ServiceFuture<List<NodeFile>> serviceFuture, final ListOperationCallback<NodeFile> serviceCallback);

    /**
     * Lists all of the files in Task directories on the specified Compute Node.
     *
     * @param nextPageLink The NextLink from the previous successful call to List operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the PagedList&lt;NodeFile&gt; object
     */
    Observable<Page<NodeFile>> listFromComputeNodeNextAsync(final String nextPageLink);

    /**
     * Lists all of the files in Task directories on the specified Compute Node.
     *
     * @param nextPageLink The NextLink from the previous successful call to List operation.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the PagedList&lt;NodeFile&gt; object
     */
    Observable<ServiceResponseWithHeaders<Page<NodeFile>, FileListFromComputeNodeHeaders>> listFromComputeNodeNextWithServiceResponseAsync(final String nextPageLink);
    /**
     * Lists all of the files in Task directories on the specified Compute Node.
     *
     * @param nextPageLink The NextLink from the previous successful call to List operation.
     * @param fileListFromComputeNodeNextOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @throws BatchErrorException thrown if the request is rejected by server
     * @throws RuntimeException all other wrapped checked exceptions if the request fails to be sent
     * @return the PagedList&lt;NodeFile&gt; object if successful.
     */
    PagedList<NodeFile> listFromComputeNodeNext(final String nextPageLink, final FileListFromComputeNodeNextOptions fileListFromComputeNodeNextOptions);

    /**
     * Lists all of the files in Task directories on the specified Compute Node.
     *
     * @param nextPageLink The NextLink from the previous successful call to List operation.
     * @param fileListFromComputeNodeNextOptions Additional parameters for the operation
     * @param serviceFuture the ServiceFuture object tracking the Retrofit calls
     * @param serviceCallback the async ServiceCallback to handle successful and failed responses.
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the {@link ServiceFuture} object
     */
    ServiceFuture<List<NodeFile>> listFromComputeNodeNextAsync(final String nextPageLink, final FileListFromComputeNodeNextOptions fileListFromComputeNodeNextOptions, final ServiceFuture<List<NodeFile>> serviceFuture, final ListOperationCallback<NodeFile> serviceCallback);

    /**
     * Lists all of the files in Task directories on the specified Compute Node.
     *
     * @param nextPageLink The NextLink from the previous successful call to List operation.
     * @param fileListFromComputeNodeNextOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the PagedList&lt;NodeFile&gt; object
     */
    Observable<Page<NodeFile>> listFromComputeNodeNextAsync(final String nextPageLink, final FileListFromComputeNodeNextOptions fileListFromComputeNodeNextOptions);

    /**
     * Lists all of the files in Task directories on the specified Compute Node.
     *
     * @param nextPageLink The NextLink from the previous successful call to List operation.
     * @param fileListFromComputeNodeNextOptions Additional parameters for the operation
     * @throws IllegalArgumentException thrown if parameters fail the validation
     * @return the observable to the PagedList&lt;NodeFile&gt; object
     */
    Observable<ServiceResponseWithHeaders<Page<NodeFile>, FileListFromComputeNodeHeaders>> listFromComputeNodeNextWithServiceResponseAsync(final String nextPageLink, final FileListFromComputeNodeNextOptions fileListFromComputeNodeNextOptions);

}
