static AbstractLoadBalancePolicyFactory() { var policyType = typeof(TPolicy); var policyCtor = GetPolicyConstructor(); var dynamicMethod = new DynamicMethod("", policyType, CreateArgs, policyType); var ilGenerator = dynamicMethod.GetILGenerator(); ilGenerator.Emit(OpCodes.Ldarg_0); ilGenerator.Emit(OpCodes.Newobj, policyCtor); ilGenerator.Emit(OpCodes.Ret); creator = (PolicyCreator)dynamicMethod.CreateDelegate(typeof(PolicyCreator)); }
public static async Task <IActionResult> Run( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequest req, ILogger log) { log.LogInformation("C# HTTP trigger function processed a request."); string requestBody = await new StreamReader(req.Body).ReadToEndAsync(); var request = JsonConvert.DeserializeObject <NewPolicyRequest>(requestBody); if (request == null) { request = new NewPolicyRequest(); } var policyCreator = new PolicyCreator(request); var result = policyCreator.Do(); if (result.IsFailed) { return(new BadRequestObjectResult(new { Errors = result.Errors })); } return(new OkObjectResult(result)); }
protected override ILoadBalancePolicy[] CreatePolicies(EndpointDiscoveryMetadata endpoint, PolicyCreator creator) { return(endpoint.Scopes.Count > 0 ? endpoint.Scopes.Select(scope => creator(target => target.Scopes.Contains(scope))).ToArray() : base.CreatePolicies(endpoint, creator)); }
protected override ILoadBalancePolicy[] CreatePolicies(EndpointDiscoveryMetadata endpoint, PolicyCreator creator) { return(endpoint.ContractTypeNames.Select(contract => creator(target => target.ContractTypeNames.Contains(contract))) .ToArray()); }
protected abstract ILoadBalancePolicy[] CreatePolicies(EndpointDiscoveryMetadata endpoint, PolicyCreator creator);