visitRuntimeBefore()

in lib/generator.js [864:888]


  visitRuntimeBefore(ast, level) {
    assert.equal(ast.type, 'object');
    this.emit('_runtime = {\n', level + 2);
    if(ast.fields.length !== 0){
      ast.fields.forEach((field) => {
        this.emit(`'${field.fieldName.lexeme}': `, level + 4);
        this.visitExpr(field.expr);
        this.emit(',\n');
      });
    }
    this.emit('}\n', level +2);
    this.emit('_last_request = None\n', level+2);
    this.emit('_last_response = None\n', level+2);
    this.emit('_retries_attempted = 0\n', level + 2);
    this.emit(`_context = RetryPolicyContext(
            retries_attempted= _retries_attempted
        )\n`, level + 2);
    this.emit(`while ${CORE}Core.should_retry(_runtime.get('retryOptions'), _context):\n`, level + 2);
    this.emit('if _retries_attempted > 0:\n', level + 4);
    this.emit(`_backoff_time = ${CORE}Core.get_backoff_time(_runtime.get('retryOptions'), _context)\n`, level + 6);
    this.emit('if _backoff_time > 0:\n', level + 6);
    this.emit(`${CORE}Core.sleep(_backoff_time)\n`, level + 8);
    this.emit('_retries_attempted = _retries_attempted + 1\n', level + 4);
    this.emit('try:\n', level + 4);
  }