예제 #1
0
 public OriginalGallery(IBrowsableCollection selection, string path, string name) : base(selection, path, name)
 {
     requests = new ScaleRequest [] { new ScaleRequest("hq", 0, 0, false),
                                      new ScaleRequest("mq", 800, 600, true),
                                      new ScaleRequest("lq", 640, 480, false, true),
                                      new ScaleRequest("thumbs", 120, 120, false) };
 }
예제 #2
0
 public OriginalGallery(IBrowsableCollection selection, string path, string name)
     : base(selection, path, name)
 {
     requests = new ScaleRequest [] { new ScaleRequest ("hq", 0, 0, false),
                      new ScaleRequest ("mq", 800, 600, true),
                      new ScaleRequest ("lq", 640, 480, false, true),
                      new ScaleRequest ("thumbs", 120, 120, false) };
 }
        internal virtual bool NeedScale(ScaleRequest scaleRequest, Offer currentOffer)
        {
            // TODO: temporary implementation
            if (currentOffer.GetThroughput() == scaleRequest.TargetThroughput)
            {
                return(false);
            }

            return(true);
        }
예제 #4
0
        public void AddRequestCharge(double context)
        {
            var  eventTime            = DateTime.Now;
            long tooManyRequestsEvent = eventTime.Ticks;

            _tooManyRequestsHistory.Add(tooManyRequestsEvent);

            _tooManyRequestsHistory = _tooManyRequestsHistory
                                      .Where(record => record >= eventTime.AddSeconds(_monitorDuration).Ticks)
                                      .ToList();

            if (_tooManyRequestsHistory.Count >= _tooManyRequestsThreshold)
            {
                var currentThroughput = Scaler.GetCurrentThroughputAsync().Result;
                // TODO make dynamic
                var scaleRequest = new ScaleRequest(_databaseId, _collectionId, currentThroughput * _scaleFactor);
                var result       = Scaler.AdjustThroughputAsync(scaleRequest).Result;
            }
        }
        public async Task <ScaleResponse> AdjustThroughputAsync(ScaleRequest scaleRequest)
        {
            var currentOffer = await GetCurrentOfferAsync();

            if (NeedScale(scaleRequest, currentOffer))
            {
                Offer replaced = await _client.ReplaceOfferAsync(new OfferV2(currentOffer, scaleRequest.TargetThroughput));

                return(new ScaleResponse
                {
                    IsAccepted = true,
                    AdjustedThroughput = replaced.GetThroughput()
                });
            }

            return(new ScaleResponse()
            {
                IsAccepted = false,
                AdjustedThroughput = currentOffer.GetThroughput()
            });
        }
예제 #6
0
        public ActionResult <ScaleResponse> PostScale(ScaleRequest scaleRequest)
        {
            //生成TaskId
            string TaskId = Guid.NewGuid().ToString();
            //生成TodoItem并保存
            ScaleParams       scaleParams = this.scaleParams;
            List <ScaleValue> scaleValues = this.scaleValues;

            scaleParams.TaskId = TaskId;
            //主键不能重复
            scaleParams.ScaleParamId = _context.ScaleParams.Count() + 1;
            int currentCount = _context.ScaleValues.Count();

            scaleValues.ForEach(m => {
                m.ScaleValueId = currentCount + m.ScaleValueId;
            });
            //更新关联关系
            TodoItem todoItem = new TodoItem {
                TokenId = scaleRequest.TokenId, TaskId = TaskId, ScaleName = this.ScaleName, ScaleType = this.ScaleType, ScaleCount = this.ScaleCount, ScaleFrequency = this.ScaleFrequency, ScaleParams = scaleParams, ScaleValues = this.scaleValues, IsComplete = false
            };

            scaleParams.todoItem = todoItem;
            scaleValues.ForEach(m => {
                m.TodoItem = todoItem;
            });
            //保存关联关系
            _context.TodoItems.Add(todoItem);
            _context.ScaleParams.Add(scaleParams);
            scaleValues.ForEach(m => _context.ScaleValues.Add(m));
            _context.SaveChanges();
            //返回结果
            ScaleResponse scaleResponse = new ScaleResponse {
                TokenId = scaleRequest.TokenId, TaskId = TaskId, Result = true, Msg = ""
            };

            return(scaleResponse);
        }
		public HtmlGallery (IBrowsableCollection selection, string path, string name) : base (selection, path, name) 
		{ 
			requests = new ScaleRequest [] { new ScaleRequest ("hq", 0, 0, false),
							 new ScaleRequest ("mq", 480, 320, false),
							 new ScaleRequest ("thumbs", 120, 90, false) };
		}
예제 #8
0
 public HtmlGallery(IBrowsableCollection selection, string path, string name) : base(selection, path, name)
 {
     requests = new ScaleRequest [] { new ScaleRequest("hq", 0, 0, false),
                                      new ScaleRequest("mq", 480, 320, false),
                                      new ScaleRequest("thumbs", 120, 90, false) };
 }