public int Run() { try { // Create the Settings object //this.Settings = new KodiAddonSettings(); // If we have routes, invoke the request handler if (Router.Routes.Count > 0) { Router.HandleRequest(this.BaseUrl + this.Parameters); } int result = this.PluginMain(); return(result); } catch (Exception ex) { // This takes the exception and stores it, not allowing it to bubble up KodiBridge.SaveException(ex); return(1); } finally { KodiBridge.SetRunningAddon(null, null); if (!IsPersistent) { KodiBridge.ScheduleAddonTermination(BaseUrl); } /* * When we get here, we have already returned from PluginMain * tell Python that we are done (TODO: Wait for threads here) * */ KodiBridge.StopRPC(); } }
private void BeforeReturn() { KodiBridge.SetRunningAddon(null); if (!IsPersistent) { KodiBridge.ScheduleAddonTermination(BaseUrl); } /* * tell Python that we are done (TODO: Wait for threads here) * */ Bridge.StopRPC(IsPersistent == false); }