/// <summary> /// Called to handle a workflow related request message received from the cadence-proxy. /// </summary> /// <param name="client">The client that received the request.</param> /// <param name="request">The request message.</param> /// <returns>The tracking <see cref="Task"/>.</returns> internal static async Task OnProxyRequestAsync(CadenceClient client, ProxyRequest request) { Covenant.Requires <ArgumentNullException>(client != null); Covenant.Requires <ArgumentNullException>(request != null); ProxyReply reply; switch (request.Type) { case InternalMessageTypes.ActivityInvokeRequest: reply = await OnActivityInvokeRequest(client, (ActivityInvokeRequest)request); break; case InternalMessageTypes.ActivityStoppingRequest: reply = await ActivityStoppingRequest(client, (ActivityStoppingRequest)request); break; default: throw new InvalidOperationException($"Unexpected message type [{request.Type}]."); } await client.ProxyReplyAsync(request, reply); }
/// <summary> /// Called to handle a workflow related request message received from the cadence-proxy. /// </summary> /// <param name="client">The client that received the request.</param> /// <param name="request">The request message.</param> /// <returns>The tracking <see cref="Task"/>.</returns> internal static async Task OnProxyRequestAsync(CadenceClient client, ProxyRequest request) { Covenant.Requires<ArgumentNullException>(client != null, nameof(client)); Covenant.Requires<ArgumentNullException>(request != null, nameof(request)); ProxyReply reply; switch (request.Type) { case InternalMessageTypes.WorkflowInvokeRequest: reply = await OnInvokeAsync(client, (WorkflowInvokeRequest)request); break; case InternalMessageTypes.WorkflowSignalInvokeRequest: reply = await OnSignalAsync(client, (WorkflowSignalInvokeRequest)request); break; case InternalMessageTypes.WorkflowQueryInvokeRequest: reply = await OnQueryAsync(client, (WorkflowQueryInvokeRequest)request); break; case InternalMessageTypes.ActivityInvokeLocalRequest: reply = await OnInvokeLocalActivity(client, (ActivityInvokeLocalRequest)request); break; case InternalMessageTypes.WorkflowFutureReadyRequest: // $todo(jefflill): We need to actually implement this. reply = new WorkflowFutureReadyReply(); break; default: throw new InvalidOperationException($"Unexpected message type [{request.Type}]."); } await client.ProxyReplyAsync(request, reply); }