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)); }
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)); }