public void LoadPluginPersist(VM vm, uint objectPID, uint pluginID, VMAsyncPluginLoadCallback callback) { //TODO: maybe a ring backup system for this too? may be more difficult Host.InBackground(() => { if (objectPID == 0) { callback(null); } try { var objStr = objectPID.ToString("x8"); var path = Path.Combine(Config.SimNFS, "Objects/" + objStr + "/Plugin/" + pluginID.ToString("x8") + ".dat"); //if path does not exist, will throw FileNotFoundException using (var file = File.Open(path, FileMode.Open)) { var dat = new byte[file.Length]; file.Read(dat, 0, dat.Length); callback(dat); } } catch (Exception e) { //todo: specific types of exception that can be thrown here? instead of just catching em all if (!(e is FileNotFoundException)) { LOG.Error(e, "Failed to load plugin persist for object " + objectPID.ToString("x8") + " plugin " + pluginID.ToString("x8") + "!"); } callback(null); } }); }
public void LoadPluginPersist(VM vm, uint objectPID, uint pluginID, VMAsyncPluginLoadCallback callback) { new System.Threading.Thread(() => { callback(null); }).Start(); }
public void LoadPluginPersist(VM vm, uint objectPID, uint pluginID, VMAsyncPluginLoadCallback callback) { var dat = Database.LoadPluginPersist(objectPID, pluginID); new System.Threading.Thread(() => { System.Threading.Thread.Sleep(100); callback(dat); }).Start(); }