コード例 #1
0
        protected override IPromise <JsonValue> PerformFacetCall(
            string facetName,
            string methodName,
            JsonArray arguments
            )
        {
            JsonValue returnedJson;

            try
            {
                var methodParameters = new FacetCallKernel.MethodParameters(
                    facetName,
                    methodName,
                    arguments,
                    SessionId
                    );

                var kernel = app.Resolve <FacetCallKernel>();

                returnedJson = kernel.Handle(methodParameters);
            }
            finally
            {
                // remember session id
                var specialValues = app.Resolve <SpecialValues>();
                SessionId = specialValues.Read("sessionId").AsString;

                // print logs that went through the Log facade
                LogPrinter.PrintLogsFromFacetCall(specialValues.Read("logs"));
            }

            return(Promise <JsonValue> .Resolved(returnedJson));
        }
コード例 #2
0
        protected override IPromise <JsonValue> PerformFacetCall(
            string facetName,
            string methodName,
            JsonArray arguments
            )
        {
            var env = new Env();

            // override with additional dev configuration
            var preferences = UnisavePreferences.LoadOrCreate();

            if (preferences.DevelopmentEnv != null)
            {
                var overrideEnv = Env.Parse(preferences.DevelopmentEnv.text);
                env.OverrideWith(overrideEnv);
            }

            var app = Bootstrap.Boot(
                GetGameAssemblyTypes(),
                env,
                new SpecialValues()
                );

            Facade.SetApplication(app);

            PerformContainerSurgery(app);

            JsonValue returnedJson;

            try
            {
                // BEGIN RUN THE APP

                var methodParameters = new FacetCallKernel.MethodParameters(
                    facetName,
                    methodName,
                    arguments,
                    SessionId
                    );

                var kernel = app.Resolve <FacetCallKernel>();

                returnedJson = kernel.Handle(methodParameters);

                // END RUN THE APP
            }
            finally
            {
                SaveDatabase();

                Facade.SetApplication(null);

                var specialValues = app.Resolve <SpecialValues>();

                app.Dispose();

                SessionId = specialValues.Read("sessionId").AsString;
                LogPrinter.PrintLogsFromFacetCall(specialValues.Read("logs"));

                OnFacetCalled?.Invoke();
            }

            return(Promise <JsonValue> .Resolved(returnedJson));
        }