示例#1
0
 protected override void HandleCanHaveContainerResponce(CanHaveContainerResponce message)
 {
     if (message.Bid.AuctionId != inOrderProping.InstanceId)
     {
         throw new NotImplementedException("How come");
     }
     if (message.Bid.Valid)
     {
         AddContainerRequest request = new AddContainerRequest(message.SenderId, 0, CurrentContainer);
         CommunicationModule.SendMessage(request);
         CurrentContainer = null;
         inOrderProping   = null;
     }
     else
     {
         if (inOrderProping.OpenSession)
         {
             TestHostForAContainer();
         }
         else
         {
             FailedScheduling();
         }
     }
 }
        private void HandlaCanHaveContainerRequest(CanHaveContainerRequest message)
        {
            //ContainerTable.AddContainer(message.ScheduledContainer.ContainerId, message.ScheduledContainer);
            var load     = LoadManager.GetHostLoadInfoAfterContainer(message.NewContainerLoadInfo);
            var newState = load.CalculateTotalUtilizationState(MinUtilization, MaxUtilization);
            Bid bid      = null;

            if (!_hostState.EvacuationMode &&
                LoadManager.CanITakeLoad(message.NewContainerLoadInfo) && newState != UtilizationStates.OverUtilization)
            {
                var pulls = CalculatePullsCount(message.NewContainerLoadInfo.ImageId);
                bid = new AuctionBid(this.MachineId, true, load, message.AuctionId, message.NewContainerLoadInfo.ContainerId, BidReasons.ValidBid, pulls);
            }
            else
            {
                bid = new AuctionBid(this.MachineId, false, null, message.AuctionId, message.NewContainerLoadInfo.ContainerId, BidReasons.CantBid, 0);
            }
            CanHaveContainerResponce responce = new CanHaveContainerResponce(0, MachineId, bid);

            CommunicationModule.SendMessage(responce);
        }
 protected override void HandleCanHaveContainerResponce(CanHaveContainerResponce message)
 {
     if (message.Bid.AuctionId != auction.InstanceId)
     {
         throw new NotImplementedException("How come");
     }
     auction.AddBid(message.Bid);
     if (!auction.OpenSession)
     {
         var winner = auction.GetWinnerBid();
         if (winner == null)
         {
             FailedScheduling();
         }
         else
         {
             AddContainerRequest request = new AddContainerRequest(message.SenderId, 0, CurrentContainer);
             CommunicationModule.SendMessage(request);
             CurrentContainer = null;
             auction          = null;
         }
     }
 }
示例#4
0
 protected abstract void HandleCanHaveContainerResponce(CanHaveContainerResponce canHaveContainerResponce);