예제 #1
0
        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));
        }
예제 #2
0
        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));
        }
예제 #3
0
 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());
 }
예제 #5
0
 protected abstract ILoadBalancePolicy[] CreatePolicies(EndpointDiscoveryMetadata endpoint, PolicyCreator creator);