# Class: ExecutorClient

## ExecutorClient

#### new ExecutorClient(parameters)

  Client for creating, monitoring, and receiving output executor jobs. This client is used by the Executor Workers and some of the API calls are not meant to be used by "end users".

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `parameters` | object | ###### Properties
  Name | Type | Description
  --- | --- | ---
  `logger` | object |

### Methods

#### createJob(jobInfo [, callback])

  Creates a new job.

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `jobInfo` | object |  | initial information about the job must contain the hash. ###### Properties
  Name | Type | Description
  --- | --- | ---
  `hash` | object | a unique id for the job (e.g. the hash of the artifact containing the executor_config.json).
  `callback` | function | <optional> | if provided no promise will be returned.

  ##### Returns:

  On success the promise will be resolved with JobInfo result.
  On error the promise will be rejected with Error error.

  Type
    external:Promise

#### getInfo(hash [, callback])

  Retrieves the current state of the job in form of a JobInfo

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `hash` | string |  | unique id for the job (e.g. the hash of the artifact containing the executor_config.json).
  `callback` | function | <optional> | if provided no promise will be returned.

  ##### Returns:

  On success the promise will be resolved with JobInfo jobInfo.
  On error the promise will be rejected with Error error.

  Type
    external:Promise

#### getNewExecutorConfig(cmd [, args] [, outputInterval] [, outputSegmentSize])

  Creates a new configuration object for the job execution.

  To make the worker post output either the outputInterval and/or outputSegmentSize must be specified.
  - If both are negative (or falsy) no output will be given.
  - When both are specified a timeout will be set at start (and after each posted output). If the number of lines exceeds outputSegmentSize during that timeout, the output will be posted and a new timeout will be triggered.
  N.B. even though a short outputInterval is set, the worker won't post new output until the responses from previous posts have returned. Before the job returns with a "completed" status code, all queued outputs will be posted (and the responses will be ensured to have returned).

  ##### Parameters:

  Name | Type | Argument | Default | Description
  --- | --- | --- | --- | ---
  `cmd` | string |  |  | command to execute.
  `args` | Array.<string> | <optional> |  | command arguments.
  `outputInterval` | number | <optional> | -1 | max time [ms] between (non-empty) output posts from worker.
  `outputSegmentSize` | number | <optional> | -1 | number of lines before new output is posted from worker. (N.B. posted segments can still contain more number of lines).

  ##### Returns:

  Type
    object

#### getOutput(hash [, start] [, end] [, callback])

  Retrieves the output associated with jobHash, to limit the output pass start and/or end. The outputs are identified by 0, 1, 2, ...

  ##### Parameters:

  Name | Type | Argument | Description
  --- | --- | --- | ---
  `hash` | string |  | hash of job related to output.
  `start` | number | <optional> | number/id of the output segment to start from (inclusive).
  `end` | number | <optional> | number/id of segment to end at (exclusive).
  `callback` | function | <optional> | if provided no promise will be returned.

  ##### Returns:

  On success the promise will be resolved with OutputInfo result.
  On error the promise will be rejected with Error error.

  Type
    external:Promise

#### Search results