示例#1
0
        public void SettleCost(ResourceAmount cost, SettleMode mode = SettleMode.Pay)
        {
            switch (mode)
            {
            case SettleMode.Pay:
                Wheat  -= cost.Wheat;
                Lumber -= cost.Lumber;
                break;

            case SettleMode.Refund:
                Wheat  += (int)(cost.Wheat * _DefaultReturnFactor);
                Lumber += (int)(cost.Lumber * _DefaultReturnFactor);
                break;

            default:
                goto case SettleMode.Pay;
            }
        }
示例#2
0
        public static AmqpLinkSettings GetLinkSettings(bool forSender, string address, SettleMode settleType, int credit = 0, bool dynamic = false)
        {
            AmqpLinkSettings settings = null;

            // create a setting for sender
            settings = new AmqpLinkSettings();
            settings.LinkName = string.Format("link-{0}", Guid.NewGuid().ToString("N"));
            settings.Role = !forSender;

            Target target = new Target();
            target.Address = address;

            Source source = new Source();
            source.Address = address;
            source.DistributionMode = "move";

            settings.Source = source;
            settings.Target = target;
            settings.SettleType = settleType;

            if (!forSender)
            {
                settings.TotalLinkCredit = (uint)credit;
                settings.AutoSendFlow = credit > 0;
                if (dynamic)
                {
                    source.Address = null;
                    source.Dynamic = true;
                }
            }
            else
            {
                settings.InitialDeliveryCount = 0;
                if (dynamic)
                {
                    target.Address = null;
                    target.Dynamic = true;
                }
            }

            settings.AddProperty("x-opt-just-testing", "ignore me");

            return settings;
        }
示例#3
0
        public static AmqpLinkSettings GetLinkSettings(bool forSender, string address, SettleMode settleType, int credit = 0, bool dynamic = false)
        {
            AmqpLinkSettings settings = null;

            // create a setting for sender
            settings          = new AmqpLinkSettings();
            settings.LinkName = string.Format("link-{0}", Guid.NewGuid().ToString("N"));
            settings.Role     = !forSender;

            Target target = new Target();

            target.Address = address;

            Source source = new Source();

            source.Address          = address;
            source.DistributionMode = "move";

            settings.Source     = source;
            settings.Target     = target;
            settings.SettleType = settleType;

            if (!forSender)
            {
                settings.TotalLinkCredit = (uint)credit;
                settings.AutoSendFlow    = credit > 0;
                if (dynamic)
                {
                    source.Address = null;
                    source.Dynamic = true;
                }
            }
            else
            {
                settings.InitialDeliveryCount = 0;
                if (dynamic)
                {
                    target.Address = null;
                    target.Dynamic = true;
                }
            }

            settings.AddProperty("x-opt-just-testing", "ignore me");

            return(settings);
        }