Example #1
0
        public override void CallbackAlert(MessageAlert messageAlert, RateControllerState state)
        {
            ulong[] Args = messageAlert.Args;
            //switch (messageAlert.AlertType)
            //{
            //    case OktoAlertType.AlertDemoGui:
            //        switch ((AlertDemoGui)Args[0])
            //        {
            //            case AlertDemoGui.ChangeLimitTokenSec:
            //                throw new NotImplementedException();
            //                break;
            //            case AlertDemoGui.ChangePolicy:
            //                throw new NotImplementedException();
            //                break;
            //            case AlertDemoGui.SetCapacity:
            //                throw new NotImplementedException();
            //                break;
            //            case AlertDemoGui.SetIsAlgorithmEnabled:
            //                throw new NotImplementedException();
            //                break;
            //            case AlertDemoGui.ChangePriority:
            //                throw new NotImplementedException();
            //                break;
            //            case AlertDemoGui.SetControlInterval:
            //                throw new NotImplementedException();
            //                break;
            //            case AlertDemoGui.SetVecIdx:
            //                throw new NotImplementedException();
            //                break;
            //            default:
            //                throw new ArgumentOutOfRangeException("AlertDemoGui unhandled " + Args[0].ToString());
            //        }
            //        break;

            //    default:
            //        throw new NotImplementedException();
            //        break;
            //}
            string logmsg = string.Format("CallbackAlert {0} received alert type {1} args:", DateTime.Now, messageAlert.AlertType.ToString());

            for (int i = 0; i < Args.Length; i++)
            {
                logmsg += Args[i].ToString() + ",";
            }
            rateController.Log(logmsg);
        }
Example #2
0
 public abstract void CallbackAlert(MessageAlert messageAlert, RateControllerState state);
        public override void CallbackAlert(MessageAlert messageAlert, RateControllerState state)
        {
            ulong[] Args = messageAlert.Args;
            //switch (messageAlert.AlertType)
            //{
            //    case OktoAlertType.AlertDemoGui:
            //        switch ((AlertDemoGui)Args[0])
            //        {
            //            case AlertDemoGui.ChangeLimitTokenSec:
            //                throw new NotImplementedException();
            //                break;
            //            case AlertDemoGui.ChangePolicy:
            //                throw new NotImplementedException();
            //                break;
            //            case AlertDemoGui.SetCapacity:
            //                throw new NotImplementedException();
            //                break;
            //            case AlertDemoGui.SetIsAlgorithmEnabled:
            //                throw new NotImplementedException();
            //                break;
            //            case AlertDemoGui.ChangePriority:
            //                throw new NotImplementedException();
            //                break;
            //            case AlertDemoGui.SetControlInterval:
            //                throw new NotImplementedException();
            //                break;
            //            case AlertDemoGui.SetVecIdx:
            //                throw new NotImplementedException();
            //                break;
            //            default:
            //                throw new ArgumentOutOfRangeException("AlertDemoGui unhandled " + Args[0].ToString());
            //        }
            //        break;

            //    default:
            //        throw new NotImplementedException();
            //        break;
            //}
            string logmsg = string.Format("CallbackAlert {0} received alert type {1} args:", DateTime.Now, messageAlert.AlertType.ToString());
            for (int i = 0; i < Args.Length; i++)
                logmsg += Args[i].ToString() + ",";
            rateController.Log(logmsg);
        }
 private void ValidateState(RateControllerState expectState, string procedure)
 {
     lock (LockState)
     {
         if (state != expectState)
         {
             string message = "Rate Controller in invalid state for call to ";
             message = String.Format("{0} {1} : current {2} expected {3}", message, procedure, state, expectState);
             throw new ApplicationException(message);
         }
     }
 }
        /// <summary>
        /// Transitions state machine. Called from sequential work queue in response to timeouts and alerts. 
        /// </summary>
        /// <param name="nextState"></param>
        public void StateTransition(RateControllerState nextState)
        {
            RcWorkItem context;
            lock (LockState)
            {
                Debug.WriteLine("StateTransition {0}=>{1}", state, nextState);
                if (state.Equals(RateControllerState.Fin) ||
                    nextState.Equals(RateControllerState.Fin) ||
                    Shutdown)
                {
                    state = RateControllerState.Fin;
                    return;
                }

                //
                // Transition to new state and take the actions associated with that state.
                //
                switch (state)
                {
                    case RateControllerState.Init:
                        Debug.Assert(nextState == RateControllerState.SettleTimeout);
                        state = nextState;
                        if (netRateController != null)
                            netRateController.StateTransitionNoOp(NetRateControllerState.SettleTimeout);
                        context = new RcWorkItem(RcWorkItemType.SettleTimeout, RateControllerState.SettleTimeout, settleMillisecs, null);
                        Console.WriteLine("RateController start init timer {0} millisecs", RcWorkItemType.SettleTimeout);
                        StartTimer(settleMillisecs, context);
                        break;
                    case RateControllerState.SettleTimeout:
                        Debug.Assert(nextState == RateControllerState.SettleCallback);
                        state = nextState;
                        if (netRateController != null)
                            netRateController.StateTransitionNoOp(NetRateControllerState.SettleCallback);
                        iPolicyModule.CallbackSettleTimeout();
                        break;
                    case RateControllerState.SettleCallback:
                        Debug.Assert(nextState == RateControllerState.SampleTimeout);
                        state = nextState;
                        if (netRateController != null)
                            netRateController.StateTransitionNoOp(NetRateControllerState.SampleTimeout);
                        context = new RcWorkItem(RcWorkItemType.SampleTimeout, RateControllerState.SampleTimeout, sampleMillisecs, null);
                        StartTimer(sampleMillisecs, context);
                        break;
                    case RateControllerState.SampleTimeout:
                        Debug.Assert(nextState == RateControllerState.UpdateCallback);
                        state = nextState;
                        if (netRateController != null)
                            netRateController.StateTransitionNoOp(NetRateControllerState.UpdateCallback);
                        iPolicyModule.CallbackControlInterval();
                        break;
                    case RateControllerState.UpdateCallback:
                        Debug.Assert(nextState == RateControllerState.SettleTimeout);
                        state = nextState;
                        if (netRateController != null)
                            netRateController.StateTransitionNoOp(NetRateControllerState.SettleTimeout);
                        context = new RcWorkItem(RcWorkItemType.SettleTimeout, RateControllerState.SettleTimeout, settleMillisecs, null);
                        StartTimer(settleMillisecs, context);
                        break;
                }
            }
        }
Example #6
0
 public abstract void CallbackAlert(MessageAlert messageAlert, RateControllerState state);