public void Prepare(Delta delta) { Console.WriteLine("Pozvan je prepare na NMS-u"); IDistributedTransactionCallback callback = OperationContext.Current.GetCallbackChannel <IDistributedTransactionCallback>(); try { UpdateResult updateResult = gda.ApplyUpdate(delta); if (updateResult.Result == ResultType.Succeeded) { callback.CallbackPrepare(true); } else { //Rollback(); callback.CallbackPrepare(false); } } catch (Exception ex) { //Rollback(); callback.CallbackPrepare(false); // problematicno ako se desi exception u pozivu, nece se uhvatiti Console.WriteLine(ex.Message); } }
/// <summary> /// Check if there is ANY free space in controller; at this point we do not know if delta will contain 1 or 10 measurements (analog or/and digital) /// so we only check if is it possible to add minimal memory occupying element /// </summary> public void Enlist() { Console.WriteLine("\nTransaction started -> \nPozvan je Enlist na SCADA"); IDistributedTransactionCallback callback = OperationContext.Current.GetCallbackChannel <IDistributedTransactionCallback>(); bool isSuccessfull = false; // at this point, we will only check if there is a free space for any DIGITALS or any ANALOGS var availableRtus = dbContext.GettAllRTUs().Values.Where(r => r.FreeSpaceForDigitals == true || r.FreeSpaceForAnalogs == true).ToList(); if (availableRtus.Count != 0) { isSuccessfull = true; } try { callback.CallbackEnlist(isSuccessfull); } catch (Exception ex) { Console.WriteLine(ex.Message); //callback.CallbackEnlist(false); } }
public void Enlist() { Console.WriteLine("Pozvan je enlist na DMS-u"); oldTree = DMS.Hosts.DMSServiceHost.Instance.Tree; IDistributedTransactionCallback callback = OperationContext.Current.GetCallbackChannel <IDistributedTransactionCallback>(); callback.CallbackEnlist(true); }
public void Rollback() { Console.WriteLine("Pozvan je RollBack na DMSu"); newTree = null; DMSServiceHost.Instance.Tree = oldTree; IDistributedTransactionCallback callback = OperationContext.Current.GetCallbackChannel <IDistributedTransactionCallback>(); callback.CallbackRollback("Something went wrong on DMS"); }
public void Rollback() { Console.WriteLine("Pozvan je RollBack na NMSu"); GenericDataAccess.NewNetworkModel = null; GenericDataAccess.NetworkModel = GenericDataAccess.OldNetworkModel; ResourceIterator.NetworkModel = GenericDataAccess.OldNetworkModel; IDistributedTransactionCallback callback = OperationContext.Current.GetCallbackChannel <IDistributedTransactionCallback>(); callback.CallbackRollback("Something went wrong on NMS"); }
/// <summary> /// Returning to old config file, initialize database again (deserializing from file) /// </summary> public void Rollback() { Console.WriteLine("Pozvan je Rollback na SCADA"); IDistributedTransactionCallback callback = OperationContext.Current.GetCallbackChannel <IDistributedTransactionCallback>(); ScadaModelParser parser = new ScadaModelParser(); //parser.SwapConfigs(newConfigFile, currentConfigFile); parser.DeserializeScadaModel(); // returning to old state (changed in apply delta) callback.CallbackRollback("Something went wrong on SCADA"); }
/// <summary> /// Setting Configuration to new file. /// </summary> public void Commit() { Console.WriteLine("Pozvan je Commit na SCADA"); IDistributedTransactionCallback callback = OperationContext.Current.GetCallbackChannel <IDistributedTransactionCallback>(); ScadaModelParser parser = new ScadaModelParser(); // to do check this //parser.SwapConfigs(currentConfigFile, modifiedConfigFile); callback.CallbackCommit("Commited on SCADA"); }
public void Commit() { Console.WriteLine("Pozvan je Commit na NMS-u"); if (GenericDataAccess.NewNetworkModel != null) { GenericDataAccess.NetworkModel = GenericDataAccess.NewNetworkModel; ResourceIterator.NetworkModel = GenericDataAccess.NewNetworkModel; } IDistributedTransactionCallback callback = OperationContext.Current.GetCallbackChannel <IDistributedTransactionCallback>(); callback.CallbackCommit("Uspjesno je prosao commit na NMS-u"); }
public void Enlist() { IDistributedTransactionCallback callback = OperationContext.Current.GetCallbackChannel <IDistributedTransactionCallback>(); Console.WriteLine("Pozvan je enlist na NMS-u"); try { gda.GetCopyOfNetworkModel(); callback.CallbackEnlist(true); } catch (Exception ex) { Console.WriteLine(ex.Message); callback.CallbackEnlist(false); } }
public void Prepare(Delta delta) { Console.WriteLine("Pozvan je prepare na DMS-u"); newTree = DMSServiceHost.Instance.InitializeNetwork(delta); DMSServiceHost.updatesCount += 1; IDistributedTransactionCallback callback = OperationContext.Current.GetCallbackChannel <IDistributedTransactionCallback>(); if (newTree.Data.Values.Count != 0) { callback.CallbackPrepare(true); } else { callback.CallbackPrepare(false); } }
public void Commit() { Console.WriteLine("Pozvan je Commit na DMS-u"); DMSServiceHost.Instance.Tree = newTree; if (DMSServiceHost.updatesCount >= 2) { Publisher publisher = new Publisher(); List <UIUpdateModel> update = new List <UIUpdateModel>(); Source s = (Source)DMSServiceHost.Instance.Tree.Data[DMSServiceHost.Instance.Tree.Roots[0]]; update.Add(new UIUpdateModel(true, s.ElementGID)); //publisher.PublishUpdateDigital(update); } IDistributedTransactionCallback callback = OperationContext.Current.GetCallbackChannel <IDistributedTransactionCallback>(); callback.CallbackCommit("Uspjesno je prosao commit na DMS-u"); }
/// <summary> /// Trying to apply, APPLYING if it is possible, and write new configuration to new file /// </summary> /// <param name="delta"></param> public void Prepare(ScadaDelta delta) { Console.WriteLine("Pozvan je Prepare na SCADA"); IDistributedTransactionCallback callback = OperationContext.Current.GetCallbackChannel <IDistributedTransactionCallback>(); if (dbContext.ApplyDelta(delta)) { try { ScadaModelParser parser = new ScadaModelParser(); // to do: // mozda ove serijaliyacije da budu taskovi_ // novu konfiguraciju cuvamo u fajlu parser.SerializeScadaModel(modifiedConfigFile); Console.WriteLine("Prepare true"); callback.CallbackPrepare(true); } catch (Exception ex) { ScadaModelParser parser = new ScadaModelParser(); parser.DeserializeScadaModel(); // returning to old state (state was previosuly changed in apply delta) Console.WriteLine(ex.Message); Console.WriteLine("1Prepare false"); callback.CallbackPrepare(false); } } else { ScadaModelParser parser = new ScadaModelParser(); parser.DeserializeScadaModel(); // returning to old state (state was previosuly changed in apply delta) Console.WriteLine("2Prepare false"); callback.CallbackPrepare(false); } }