async function()

in server/middleware/grpc-client/index.js [54:175]


  async function(ctx, next) {
    const adminService = new GRPCService({
      ctx,
      peers,
      requestConfig,
      ...adminServiceConfig,
    });
    const domainService = new GRPCService({
      ctx,
      peers,
      requestConfig,
      ...domainServiceConfig,
    });
    const visibilityService = new GRPCService({
      ctx,
      peers,
      requestConfig,
      ...visibilityServiceConfig,
    });
    const workflowService = new GRPCService({
      ctx,
      peers,
      requestConfig,
      ...workflowServiceConfig,
    });

    ctx.cadence = {
      archivedWorkflows: visibilityService.request({
        formatResponse: formatResponseWorkflowList,
        method: 'ListArchivedWorkflowExecutions',
        transform: combine(withDomain(ctx), withPagination(ctx)),
      }),
      closedWorkflows: visibilityService.request({
        formatRequest: formatRequestWorkflowList,
        formatResponse: formatResponseWorkflowList,
        method: 'ListClosedWorkflowExecutions',
        transform: combine(withDomain(ctx), withPagination(ctx)),
      }),
      describeCluster: adminService.request({
        method: 'DescribeCluster',
      }),
      describeDomain: domainService.request({
        formatResponse: formatResponseDomain,
        method: 'DescribeDomain',
      }),
      describeTaskList: workflowService.request({
        formatRequest: formatRequestDescribeTaskList,
        formatResponse: formatResponseDescribeTaskList,
        method: 'DescribeTaskList',
      }),
      describeWorkflow: workflowService.request({
        formatResponse: formatResponseDescribeWorkflow,
        method: 'DescribeWorkflowExecution',
        transform: combine(withDomain(ctx), withWorkflowExecution(ctx)),
      }),
      exportHistory: workflowService.request({
        formatRequest: formatRequestGetHistory,
        formatResponse: formatResponseExportHistory,
        method: 'GetWorkflowExecutionHistory',
        transform: combine(
          withDomain(ctx),
          withPagination(ctx),
          withWorkflowExecution(ctx)
        ),
      }),
      getHistory: workflowService.request({
        formatRequest: formatRequestGetHistory,
        formatResponse: formatResponseGetHistory,
        method: 'GetWorkflowExecutionHistory',
        transform: combine(
          withDomain(ctx),
          withPagination(ctx),
          withWorkflowExecution(ctx)
        ),
      }),
      listDomains: domainService.request({
        formatResponse: formatResponseListDomains,
        method: 'ListDomains',
      }),
      listTaskListPartitions: workflowService.request({
        method: 'ListTaskListPartitions',
      }),
      listWorkflows: visibilityService.request({
        formatResponse: formatResponseWorkflowList,
        method: 'ListWorkflowExecutions',
        transform: combine(withDomain(ctx), withPagination(ctx)),
      }),
      openWorkflows: visibilityService.request({
        formatRequest: formatRequestWorkflowList,
        formatResponse: formatResponseWorkflowList,
        method: 'ListOpenWorkflowExecutions',
        transform: combine(withDomain(ctx), withPagination(ctx)),
      }),
      queryWorkflow: workflowService.request({
        method: 'QueryWorkflow',
        formatResponse: formatResponseQueryWorkflow,
        transform: combine(withDomain(ctx), withWorkflowExecution(ctx)),
      }),
      signalWorkflow: workflowService.request({
        formatResponse: formatResponseSignalWorkflowExecution,
        method: 'SignalWorkflowExecution',
        transform: combine(withDomain(ctx), withWorkflowExecution(ctx)),
      }),
      terminateWorkflow: workflowService.request({
        formatResponse: formatResponseTerminateWorkflowExecution,
        method: 'TerminateWorkflowExecution',
        transform: combine(withDomain(ctx), withWorkflowExecution(ctx)),
      }),
    };

    try {
      await next();
      domainService.close();
      visibilityService.close();
      workflowService.close();
    } catch (e) {
      domainService.close();
      visibilityService.close();
      workflowService.close();
      throw e;
    }
  };