/** \page taskSpecific Task-Specific Classes \brief Tasks That Can Be Performed With Their Own Classes or as Part of DiFXControl.Client A number of the "high level" tasks that can be performed by the DiFXControl.Client class have specific classes that are associated with them. These classes can be instantiated by DiFXControl.Client though like-named methods. Alternatively, they can be instantiated externally, either with an instance of the DiFXControl.Client as an argument, in which case they use that Client for their communication with the server; OR with no argument in which case they make themselves an inheriting class of the DiFXControl.Client class. An example would be the DiFXJobStatus.Client class. This class can be used to obtain the "status" of a job, or list of jobs, on the DiFX server. It needs the DiFXControl.Client class to handle the communications with the DiFX server, so it inherits the DiFXControl.Client class. One way to create an instance of the DiFXJobStatus.Client class is without any arguments, in which case it runs as one would expect if it inherited the DiFXControl.Client class, with access to all of its methods: \code{.py} # Create an instance of the JobStatus class jobStatus = DiFXJobStatus.Client() # Employ DiFXControl.Client class methods to connect to the server jobStatus.connect( ( "localhost", 50401 ) ) # Get the job status you want statusInfo = jobStatus.jobStatus( "/full/path/to/input/file", True ) # Parse and report happily ... \endcode Alternatively, an existing instance of the DiFXControl.Client class can be used as an argument when instantiating the DiFXJobStatus.Client class. This allows you to utilize an existing connection: \code{.py} # Create a DiFXControl.Client instance difx = DiFXControl.Client() difx.connect( ( "localhost", 50401 ) ) # Do some other stuff with the client ... # Use it to obtain a job status statusInfo = DiFXJobStatus.Client( difx ).jobStatus( "/full/path/to/input/file", True ) # Parse, etc... ... \endcode The above approach isn't one that users are expected to employ - however, it is used by the jobStatus() convenience function in the DiFXControl.Client class, the code for which is here: \code{.py} def jobStatus( self, path, shortStatus ): return DiFXJobStatus.Client(self).jobStatus( path, shortStatus ) \endcode This convenience function allows you to obtain the job status as a method of the DiFXControl.Client class: \code{.py} # Create a DiFXControl.Client instance difx = DiFXControl.Client() difx.connect( ( "localhost", 50401 ) ) # Do some other stuff with the client ... # Use the client method to obtain a job status statusInfo = difx.jobStatus( "/full/path/to/input/file", True ) # Parse away... ... \endcode