예제 #1
0
            public static void Run()
            {
                IExecutive exec = ExecFactory.Instance.CreateExecutive();

                #region Set up a metronome to fire once a second in sim time.

                DateTime         startAt     = DateTime.Parse("Fri, 15 Jul 2016 00:00:00");
                DateTime         finishAfter = DateTime.Parse("Fri, 15 Jul 2016 00:09:59");
                TimeSpan         period      = TimeSpan.FromSeconds(.005);
                Metronome_Simple metronome   = Metronome_Simple.CreateMetronome(exec, startAt, finishAfter, period);
                metronome.TickEvent += UpdateState;

                #endregion

                // Attach an ExecController so that it runs at 100 x of user time,
                // and issues 10 render events every second.
                double         scale          = 2.0; // 10^2, or 100 x real-time.
                int            frameRate      = 10;  // 10 render events per second.
                ExecController execController = new ExecController(exec, scale, frameRate, exec);

                execController.Render += Render;

                exec.Start();

                Console.WriteLine("{0} simulation events fired.", exec.EventCount);
            }
예제 #2
0
        public async Task <ApiResponse> Exec(string endpoint, string schema, string routine, Dictionary <string, string> parameters, int n, string appTitle, string appVersion)
        {
            ExecController.ExecType type = (ExecController.ExecType)n;
            var endpointElems            = endpoint.Split('/'); // TODO: error handling

            if (type != ExecController.ExecType.ServerMethod)
            {
                var execOptions = new ExecController.ExecOptions()
                {
                    project         = endpointElems[0],
                    application     = endpointElems[1],
                    endpoint        = endpointElems[2],
                    schema          = schema,
                    routine         = routine,
                    type            = type,
                    inputParameters = parameters
                };

                //  (var result, var routineExecutionMetric, var mayAccess)
                //out var responseHeaders
                var result = await ExecController.ExecuteRoutineAsync(execOptions, null /*requestHeaders*/, "$WEB SOCKETS$", null /*remoteIPAddress*/, appTitle, appVersion);

                if (!(result?.MayAccess?.IsSuccess ?? false))
                {
                    throw new Exception("Unauthorised access");
                }

                return((ApiResponse)result.ApiResponse);
            }
            else
            {
                var execOptions = new ExecController.ExecOptions()
                {
                    project = endpointElems[0], application = endpointElems[1], endpoint = endpointElems[2], schema = schema, routine = routine, type = type
                };
                //ServerMethodsController.ExecuteGeneric()

                // TODO: return type is a problem so create a new method perhaps?
                // TODO: Figure out to exec ServerMethod from here
                return(null);
            }
        }
예제 #3
0
 public void Setup()
 {
     _requestExecMock = new Mock <IRequestExec <Exec> >();
     _controller      = new ExecController(_requestExecMock.Object);
 }