예제 #1
0
        public virtual bool addRequestToBatch(ConstrainRequest request, RequestTutor tutor, RequestListener listener)
        {
            if (this.batchType != CONTROL)
            {
                log.Error("Unexpected request type was given to batch");
                return(false);
            }

            //can we queue costrain rebind for 2 different sessions? (NO)

            string key = CONSTRAINT_KEY;

            RequestObjects requestObj = new RequestObjects(request, tutor, listener);

            RequestObjects queuedRequest = null;

            keys.TryGetValue(key, out queuedRequest);
            if (queuedRequest != null)
            {
                queuedRequest.tutor.notifyAbort();
                this.substituteRequest(key, requestObj);
            }
            else
            {
                this.addRequestInternal(key, requestObj);
            }

            return(true);
        }
예제 #2
0
        /// <summary>
        /// Change-bandwidth request.
        /// </summary>
        /// <param name="maxBandwidth"> </param>
        /// <param name="parent"> if this is a retransmission, {@code parent} must be the original client request.
        /// If this is a client request, {@code parent} must be null. </param>
        public ConstrainRequest(double maxBandwidth, ConstrainRequest parent)
        {
            this.addParameter("LS_op", "constrain");

            if (maxBandwidth == 0)
            {
                this.addParameter("LS_requested_max_bandwidth", "unlimited");
            }
            else if (maxBandwidth > 0)
            {
                this.addParameter("LS_requested_max_bandwidth", maxBandwidth);
            }

            this.maxBandwidth    = maxBandwidth;
            this.clientRequestId = (parent == null ? requestId : parent.ClientRequestId);
        }