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);
            }
        }
示例#3
0
        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);
        }
示例#4
0
        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);
            }
        }
示例#10
0
        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);
            }
        }
示例#11
0
        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);
            }
        }