コード例 #1
0
        private SynchronizeData CreateSynchronizeDataForGuidList(Dictionary <uint, string> modfiedGuidList)
        {
            Dictionary <uint, SnapshotNode> modifiedGuids = new Dictionary <uint, SnapshotNode>();
            SynchronizeData syncDataReturn = new SynchronizeData();

            if (modfiedGuidList != null)
            {
                //foreach (uint guid in modfiedGuidList)
                foreach (var kvp in modfiedGuidList)
                {
                    // Get the uid recognized by the graphIDE
                    uint         guid  = kvp.Key;
                    string       name  = kvp.Value;
                    SnapshotNode sNode = new SnapshotNode(this.graphCompiler.GetRealUID(guid), SnapshotNodeType.Identifier, name);
                    if (!modifiedGuids.ContainsKey(sNode.Id))
                    {
                        modifiedGuids.Add(sNode.Id, sNode);
                    }
                }

                foreach (KeyValuePair <uint, SnapshotNode> kvp in modifiedGuids)
                {
                    syncDataReturn.ModifiedNodes.Add(kvp.Value);
                }
            }

            return(syncDataReturn);
        }
コード例 #2
0
        internal void SynchronizeToLiveRunner(DeltaNodes deltaNodes)
        {
            if (false != deltaNodes.IsEmpty)
            {
                throw new InvalidOperationException("Nothing to send to 'lifeRunner'");
            }

            // If there is something that we would like to query
            // the value for, add it into the modified node list.
            if (false == scheduledDeltaNodes.IsEmpty)
            {
                deltaNodes.AppendToRemovedNodes(scheduledDeltaNodes.RemovedNodes);
                deltaNodes.AppendToAddedNodes(scheduledDeltaNodes.AddedNodes);
                deltaNodes.AppendToModifiedNodes(scheduledDeltaNodes.ModifiedNodes);
                scheduledDeltaNodes.Reset();
            }

            // Compact the DeltaNodes so that there is no duplicate and no node
            // exists in more than one list (e.g. addedNodes and modifiedNodes).
            deltaNodes.Compact();

            SynchronizeData sd = new SynchronizeData();

            if (null != deltaNodes.RemovedNodes && (deltaNodes.RemovedNodes.Count > 0))
            {
                foreach (IVisualNode node in deltaNodes.RemovedNodes)
                {
                    sd.RemovedNodes.Add(node.NodeId);
                }
            }

            if (null != deltaNodes.AddedNodes && (deltaNodes.AddedNodes.Count > 0))
            {
                sd.AddedNodes = this.CreateSnapshotNodesFromVisualNodes(deltaNodes.AddedNodes);
            }
            if (null != deltaNodes.ModifiedNodes && (deltaNodes.ModifiedNodes.Count > 0))
            {
                sd.ModifiedNodes = this.CreateSnapshotNodesFromVisualNodes(deltaNodes.ModifiedNodes);
            }

            // Tell the graph compiler that some variables are undefined.
            MergeUndefinedVariablesIntoData(deltaNodes.Undefinitions, sd);

            this.sdc.sdList.Add(sd);
            if (Configurations.EnableLiveExection)
            {
                try
                {
                    this.CurrentSynchronizer.PushUpdate(sd);
                }
                catch (Exception e)
                {
                    Debug.WriteLine(e);
                }
            }
        }
コード例 #3
0
        protected ConnectionResult WaitRecall(IList <string> deviceCodes, TimeSpan timeOut, out IList <Telemetry> telemetries)
        {
            StringBuilder devices = new StringBuilder(deviceCodes.Count);

            foreach (string deviceCode in deviceCodes)
            {
                devices.Append(deviceCode).Append("; ");
            }
            Logger.Debug($"Waiting Telemetry from {devices}");

            var sTime = new SynchronizeData();
            var sData = new SynchronizeData();
            ConcurrentBag <Telemetry> concurrent = new ConcurrentBag <Telemetry>();

            void TimeElapsed()
            {
                Task.Delay(timeOut).Wait();
                sTime.IsEmty = false;
            }

            void OnTelemetry(object sender, Telemetry args)
            {
                if (!deviceCodes.Contains(args.DeviceCode))
                {
                    return;
                }
                concurrent.Add(args);
                lock (deviceCodes) { deviceCodes.Remove(args.DeviceCode); }
                if (deviceCodes.Count == 0)
                {
                    sData.IsEmty = false;
                }
            }

            DbController.DataAdded += OnTelemetry;
            Task.Run(() => TimeElapsed());
            while (sData.IsEmty && sTime.IsEmty)
            {
            }
            DbController.DataAdded -= OnTelemetry;

            telemetries = concurrent.ToArray();
            if (sData.ResultInfo == SynchronizeResult.Empty)
            {
                StringBuilder devicesLost = new StringBuilder(deviceCodes.Count);
                foreach (string deviceCode in deviceCodes)
                {
                    devicesLost.Append(deviceCode).Append("; ");
                }
                Logger.Error($"Not Found Telemetry from {devicesLost}");
                return(ConnectionResult.NotFound);
            }
            Logger.Debug($"Waiting Telemetry from {devices}");
            return(ConnectionResult.Successful);
        }
コード例 #4
0
        /// <summary>
        /// Push new synchronization data, returns immediately and will
        /// trigger a GraphUpdateReady when the value when the execution
        /// is completed
        /// </summary>
        /// <param name="syncData"></param>
        public void BeginUpdateGraph(SynchronizeData syncData)
        {
            lock (taskQueue)
            {
                taskQueue.Enqueue(
                    new UpdateGraphTask(syncData, this));
            }

            //Todo(Luke) add a Monitor queue to prevent having to have the
            //work poll
        }
コード例 #5
0
        public GraphUpdateReadyEventArgs(SynchronizeData syncData, EventStatus resultStatus, String errorString)
        {
            this.SyncData     = syncData;
            this.ResultStatus = resultStatus;
            this.ErrorString  = errorString;

            if (string.IsNullOrEmpty(this.ErrorString))
            {
                this.ErrorString = "";
            }

            Errors   = new List <ErrorObject>();
            Warnings = new List <ErrorObject>();
        }
コード例 #6
0
            private void ReportRuntimeWarnings(string code, SynchronizeData syncDataReturn, Dictionary <uint, string> modifiedGuidList, ref GraphUpdateReadyEventArgs retArgs)
            {
                //GraphUpdateReadyEventArgs retArgs = null;

                if (runner.runnerCore.RuntimeStatus.Warnings.Count > 0)
                {
                    if (retArgs == null)
                    {
                        retArgs = new GraphUpdateReadyEventArgs(syncDataReturn);
                    }

                    foreach (var err in runner.runnerCore.RuntimeStatus.Warnings)
                    {
                        string msg    = err.message;
                        int    lineNo = err.Line;

                        // TODO: How can the lineNo be invalid ?
                        if (lineNo == ProtoCore.DSASM.Constants.kInvalidIndex)
                        {
                            retArgs.Warnings.Add(new GraphUpdateReadyEventArgs.ErrorObject {
                                Message = msg, Id = 0
                            });
                            continue;
                        }

                        string varName = GetVarNameFromCode(lineNo, code);

                        foreach (var kvp in modifiedGuidList)
                        {
                            // Get the uid recognized by the graphIDE
                            uint   guid = kvp.Key;
                            string name = kvp.Value;
                            if (name.Equals(varName))
                            {
                                retArgs.Warnings.Add(new GraphUpdateReadyEventArgs.ErrorObject {
                                    Message = msg, Id = runner.graphCompiler.GetRealUID(guid)
                                });
                                break;
                            }
                        }

                        if (retArgs.Warnings.Count == 0)
                        {
                            LogWarningsFromInputNodes(retArgs, varName, msg);
                        }
                    }
                }
            }
コード例 #7
0
 public void UpdateGraph(SynchronizeData syndData)
 {
     while (true)
     {
         lock (taskQueue)
         {
             //Spin waiting for the queue to be empty
             if (taskQueue.Count == 0)
             {
                 string code = null;
                 SynchronizeInternal(syndData, out code);
                 return;
             }
         }
         Thread.Sleep(0);
     }
 }
コード例 #8
0
        protected ConnectionResult WaitRecall(string deviceCode, TimeSpan timeOut, out string ip)
        {
            Logger.Debug($"Waiting {CallType.Recall} from {deviceCode}");

            var sTime = new SynchronizeData();
            var sData = new SynchronizeData <string>();

            void TimeElapsed()
            {
                Task.Delay(timeOut).Wait();
                sTime.IsEmty = false;
            }

            void OnCallReady(RemoteHostInfo hostInfo, EventCallArgs args)
            {
                if (args.Message.DeviceCode != deviceCode)
                {
                    return;
                }
                if (args.CallInfo.CallType != CallType.Recall)
                {
                    return;
                }
                sData.IsEmty = false;
                sData.Data   = hostInfo.Host;
            }

            Server.CallReceived += OnCallReady;
            Task.Run(() => TimeElapsed());
            while (sData.IsEmty && sTime.IsEmty)
            {
            }
            Server.CallReceived -= OnCallReady;

            ip = sData.Data;
            if (sData.ResultInfo == SynchronizeResult.Empty)
            {
                Logger.Error($"Not Found {CallType.Recall} from {deviceCode}");
                return(ConnectionResult.NotFound);
            }

            Logger.Debug($"Waited {CallType.Recall} from {deviceCode}");
            return(ConnectionResult.Successful);
        }
コード例 #9
0
        internal void PushUpdate(SynchronizeData data)
        {
            if (null == this.runner) // Running in headless mode.
            {
                return;
            }
            if (Configurations.DumpDebugInfo)
            {
                System.Diagnostics.Debug.WriteLine("Sync: " + data);
            }

            Validity.Assert(data != null);

            try
            {
                runner.BeginUpdateGraph(data);
            }
            catch (Exception e)
            {
                //TODO Failsafe handler here
                System.Diagnostics.Debug.WriteLine("PushUpdate threw: " + e);
            }
        }
コード例 #10
0
        protected ConnectionResult WaitReady(string deviceCode, TimeSpan timeOut)
        {
            var sData = new SynchronizeData();
            var sTime = new SynchronizeData();

            void TimeElapsed()
            {
                Task.Delay(timeOut).Wait();
                sTime.IsEmty = false;
            }

            void OnCallReady(RemoteHostInfo hostInfo, EventCallArgs args)
            {
                if (args.Message.DeviceCode != deviceCode)
                {
                    return;
                }
                if (args.CallInfo.CallType != CallType.Ready)
                {
                    return;
                }
                sData.IsEmty = false;
            }

            Server.CallReceived += OnCallReady;
            Task.Run(() => TimeElapsed());
            while (sData.IsEmty && sTime.IsEmty)
            {
            }
            Server.CallReceived -= OnCallReady;

            if (sData.ResultInfo == SynchronizeResult.Empty)
            {
                return(ConnectionResult.NotFound);
            }
            return(ConnectionResult.Successful);
        }
コード例 #11
0
ファイル: LiveRunner.cs プロジェクト: TheChosen0ne/Dynamo
            private SynchronizeData CreateSynchronizeDataForGuidList(Dictionary<uint, string> modfiedGuidList)
            {
                Dictionary<uint, SnapshotNode> modifiedGuids = new Dictionary<uint, SnapshotNode>();
                SynchronizeData syncDataReturn = new SynchronizeData();

                if (modfiedGuidList != null)
                {
                    //foreach (uint guid in modfiedGuidList)
                    foreach (var kvp in modfiedGuidList)
                    {
                        // Get the uid recognized by the graphIDE
                        uint guid = kvp.Key;
                        string name = kvp.Value;
                        SnapshotNode sNode = new SnapshotNode(this.graphCompiler.GetRealUID(guid), SnapshotNodeType.Identifier, name);
                        if (!modifiedGuids.ContainsKey(sNode.Id))
                        {
                            modifiedGuids.Add(sNode.Id, sNode);
                        }
                    }

                    foreach (KeyValuePair<uint, SnapshotNode> kvp in modifiedGuids)
                        syncDataReturn.ModifiedNodes.Add(kvp.Value);
                }

                return syncDataReturn;
            }
コード例 #12
0
ファイル: LiveRunner.cs プロジェクト: junmendoza/designscript
            private void ReportErrors(string code, SynchronizeData syncDataReturn, Dictionary<uint, string> modifiedGuidList, ref GraphUpdateReadyEventArgs retArgs)
            {
                Dictionary<ulong, ProtoCore.Core.ErrorEntry> errorMap = runner.runnerCore.LocationErrorMap;

                if (errorMap.Count == 0)
                    return;

                retArgs = new GraphUpdateReadyEventArgs(syncDataReturn);
                foreach (var kvp in errorMap)
                {
                    ProtoCore.Core.ErrorEntry err = kvp.Value;
                    string msg = err.Message;
                    int lineNo = err.Line;

                    // If error is a Build error
                    if (err.BuildId != ProtoCore.BuildData.WarningID.kDefault)
                    {
                        // Error comes from imported DS file
                        if (!string.IsNullOrEmpty(err.FileName))
                        {
                            msg += " At line " + err.Line + ", column " + err.Col + ", in " + Path.GetFileName(err.FileName);
                            if (err.Type == ProtoCore.Core.ErrorType.Error)
                            {
                                retArgs.Errors.Add(new GraphUpdateReadyEventArgs.ErrorObject { Message = msg, Id = 0 });
                            }
                            else if (err.Type == ProtoCore.Core.ErrorType.Warning)
                            {
                                retArgs.Warnings.Add(new GraphUpdateReadyEventArgs.ErrorObject { Message = msg, Id = 0 });
                            }
                            continue;
                        }

                    }

                    string varName = GetVarNameFromCode(lineNo, code);

                    // Errors
                    if (err.Type == ProtoCore.Core.ErrorType.Error)
                    {
                        // TODO: How can the lineNo be invalid ?
                        if (lineNo == ProtoCore.DSASM.Constants.kInvalidIndex || varName == null)
                        {
                            retArgs.Errors.Add(new GraphUpdateReadyEventArgs.ErrorObject { Message = msg, Id = 0 });
                            continue;
                        }

                        foreach (var pair in runner.graphCompiler.mapModifiedName)
                        {
                            string name = pair.Key;
                            if (name.Equals(varName))
                            {
                                uint guid = pair.Value;
                                retArgs.Errors.Add(new GraphUpdateReadyEventArgs.ErrorObject { Message = msg, Id = runner.graphCompiler.GetRealUID(guid) });
                                break;
                            }

                        }
                    }
                    else if(err.Type == ProtoCore.Core.ErrorType.Warning) // Warnings
                    {
                        // TODO: How can the lineNo be invalid ?
                        if (lineNo == ProtoCore.DSASM.Constants.kInvalidIndex || varName == null)
                        {
                            retArgs.Warnings.Add(new GraphUpdateReadyEventArgs.ErrorObject { Message = msg, Id = 0 });
                            continue;
                        }

                        foreach (var pair in modifiedGuidList)
                        {
                            // Get the uid recognized by the graphIDE
                            string name = pair.Value;
                            if (name.Equals(varName))
                            {
                                uint guid = pair.Key;
                                retArgs.Warnings.Add(new GraphUpdateReadyEventArgs.ErrorObject { Message = msg, Id = runner.graphCompiler.GetRealUID(guid) });
                                break;
                            }
                        }
                        if (retArgs.Warnings.Count == 0)
                        {
                            foreach (var pair in runner.graphCompiler.mapModifiedName)
                            {
                                string name = pair.Key;
                                if (name.Equals(varName))
                                {
                                    uint guid = pair.Value;
                                    retArgs.Warnings.Add(new GraphUpdateReadyEventArgs.ErrorObject { Message = msg, Id = runner.graphCompiler.GetRealUID(guid) });
                                    break;
                                }
                            }
                        }
                    }
                }
            }
コード例 #13
0
ファイル: LiveRunner.cs プロジェクト: junmendoza/designscript
 public UpdateGraphTask(SynchronizeData syncData, LiveRunner runner)
     : base(runner)
 {
     this.syncData = syncData;
 }
コード例 #14
0
 public GraphUpdateReadyEventArgs(SynchronizeData syncData) : this(syncData, EventStatus.OK, null)
 {
 }
コード例 #15
0
ファイル: LiveRunner.cs プロジェクト: junmendoza/designscript
            private void ReportBuildErrorsAndWarnings(string code, SynchronizeData syncDataReturn, Dictionary<uint, string> modifiedGuidList, ref GraphUpdateReadyEventArgs retArgs)
            {
                //GraphUpdateReadyEventArgs retArgs = null;
                if (runner.compileState.BuildStatus.ErrorCount > 0)
                {
                    retArgs = new GraphUpdateReadyEventArgs(syncDataReturn);

                    foreach (var err in runner.compileState.BuildStatus.Errors)
                    {
                        string msg = err.Message;
                        int lineNo = err.Line;

                        // TODO: How can the lineNo be invalid ?
                        if (lineNo == ProtoCore.DSASM.Constants.kInvalidIndex)
                        {
                            retArgs.Errors.Add(new GraphUpdateReadyEventArgs.ErrorObject { Message = msg, Id = 0 });
                            continue;
                        }

                        string varName = GetVarNameFromCode(lineNo, code);

                        foreach (var ssnode in syncData.AddedNodes)
                        {
                            if (ssnode.Content.Contains(varName))
                            {
                                uint id = ssnode.Id;

                                retArgs.Errors.Add(new GraphUpdateReadyEventArgs.ErrorObject { Message = msg, Id = id });
                                break;
                            }
                        }
                        if (retArgs.Errors.Count == 0)
                        {
                            foreach (var ssnode in syncData.ModifiedNodes)
                            {
                                if (ssnode.Content.Contains(varName))
                                {
                                    uint id = ssnode.Id;

                                    retArgs.Errors.Add(new GraphUpdateReadyEventArgs.ErrorObject { Message = msg, Id = id });
                                    break;
                                }
                            }
                        }
                    }
                }
                if (runner.compileState.BuildStatus.WarningCount > 0)
                {
                    if (retArgs == null)
                        retArgs = new GraphUpdateReadyEventArgs(syncDataReturn);

                    foreach (var warning in runner.compileState.BuildStatus.Warnings)
                    {
                        string msg = warning.msg;
                        int lineNo = warning.line;

                        // TODO: How can the lineNo be invalid ?
                        if (lineNo == ProtoCore.DSASM.Constants.kInvalidIndex)
                        {
                            retArgs.Warnings.Add(new GraphUpdateReadyEventArgs.ErrorObject { Message = msg, Id = 0 });
                            continue;
                        }

                        string varName = GetVarNameFromCode(lineNo, code);

                        // This array should be empty for Build errors

                        /*foreach (var ssnode in syncDataReturn.ModifiedNodes)
                        {
                            if(ssnode.Content.Contains(varName))
                            {
                                uint id = ssnode.Id;

                                retArgs.Warnings.Add(new GraphUpdateReadyEventArgs.ErrorObject { Message = msg, Id = id });
                                break;
                            }
                        }*/
                        foreach (var kvp in modifiedGuidList)
                        {
                            // Get the uid recognized by the graphIDE
                            uint guid = kvp.Key;
                            string name = kvp.Value;
                            if (name.Equals(varName))
                            {
                                retArgs.Warnings.Add(new GraphUpdateReadyEventArgs.ErrorObject { Message = msg, Id = runner.graphCompiler.GetRealUID(guid) });
                                break;
                            }
                        }

                        if(retArgs.Warnings.Count == 0)
                        {
                            LogWarningsFromInputNodes(retArgs, varName, msg);
                        }

                    }
                }
            }
コード例 #16
0
            private void ReportErrors(string code, SynchronizeData syncDataReturn, Dictionary <uint, string> modifiedGuidList, ref GraphUpdateReadyEventArgs retArgs)
            {
                Dictionary <ulong, ProtoCore.Core.ErrorEntry> errorMap = runner.runnerCore.LocationErrorMap;

                if (errorMap.Count == 0)
                {
                    return;
                }

                retArgs = new GraphUpdateReadyEventArgs(syncDataReturn);
                foreach (var kvp in errorMap)
                {
                    ProtoCore.Core.ErrorEntry err = kvp.Value;
                    string msg    = err.Message;
                    int    lineNo = err.Line;

                    // If error is a Build error
                    if (err.BuildId != ProtoCore.BuildData.WarningID.kDefault)
                    {
                        // Error comes from imported DS file
                        if (!string.IsNullOrEmpty(err.FileName))
                        {
                            msg += " At line " + err.Line + ", column " + err.Col + ", in " + Path.GetFileName(err.FileName);
                            if (err.Type == ProtoCore.Core.ErrorType.Error)
                            {
                                retArgs.Errors.Add(new GraphUpdateReadyEventArgs.ErrorObject {
                                    Message = msg, Id = 0
                                });
                            }
                            else if (err.Type == ProtoCore.Core.ErrorType.Warning)
                            {
                                retArgs.Warnings.Add(new GraphUpdateReadyEventArgs.ErrorObject {
                                    Message = msg, Id = 0
                                });
                            }
                            continue;
                        }
                    }

                    string varName = GetVarNameFromCode(lineNo, code);

                    // Errors
                    if (err.Type == ProtoCore.Core.ErrorType.Error)
                    {
                        // TODO: How can the lineNo be invalid ?
                        if (lineNo == ProtoCore.DSASM.Constants.kInvalidIndex || varName == null)
                        {
                            retArgs.Errors.Add(new GraphUpdateReadyEventArgs.ErrorObject {
                                Message = msg, Id = 0
                            });
                            continue;
                        }

                        foreach (var pair in runner.graphCompiler.mapModifiedName)
                        {
                            string name = pair.Key;
                            if (name.Equals(varName))
                            {
                                uint guid = pair.Value;
                                retArgs.Errors.Add(new GraphUpdateReadyEventArgs.ErrorObject {
                                    Message = msg, Id = runner.graphCompiler.GetRealUID(guid)
                                });
                                break;
                            }
                        }
                    }
                    else if (err.Type == ProtoCore.Core.ErrorType.Warning) // Warnings
                    {
                        // TODO: How can the lineNo be invalid ?
                        if (lineNo == ProtoCore.DSASM.Constants.kInvalidIndex || varName == null)
                        {
                            retArgs.Warnings.Add(new GraphUpdateReadyEventArgs.ErrorObject {
                                Message = msg, Id = 0
                            });
                            continue;
                        }

                        foreach (var pair in modifiedGuidList)
                        {
                            // Get the uid recognized by the graphIDE
                            string name = pair.Value;
                            if (name.Equals(varName))
                            {
                                uint guid = pair.Key;
                                retArgs.Warnings.Add(new GraphUpdateReadyEventArgs.ErrorObject {
                                    Message = msg, Id = runner.graphCompiler.GetRealUID(guid)
                                });
                                break;
                            }
                        }
                        if (retArgs.Warnings.Count == 0)
                        {
                            foreach (var pair in runner.graphCompiler.mapModifiedName)
                            {
                                string name = pair.Key;
                                if (name.Equals(varName))
                                {
                                    uint guid = pair.Value;
                                    retArgs.Warnings.Add(new GraphUpdateReadyEventArgs.ErrorObject {
                                        Message = msg, Id = runner.graphCompiler.GetRealUID(guid)
                                    });
                                    break;
                                }
                            }
                        }
                    }
                }
            }
コード例 #17
0
 public UpdateGraphTask(SynchronizeData syncData, LiveRunner runner)
     : base(runner)
 {
     this.syncData = syncData;
 }
コード例 #18
0
            private void ReportBuildErrorsAndWarnings(string code, SynchronizeData syncDataReturn, Dictionary <uint, string> modifiedGuidList, ref GraphUpdateReadyEventArgs retArgs)
            {
                //GraphUpdateReadyEventArgs retArgs = null;
                if (runner.compileState.BuildStatus.ErrorCount > 0)
                {
                    retArgs = new GraphUpdateReadyEventArgs(syncDataReturn);

                    foreach (var err in runner.compileState.BuildStatus.Errors)
                    {
                        string msg    = err.Message;
                        int    lineNo = err.Line;

                        // TODO: How can the lineNo be invalid ?
                        if (lineNo == ProtoCore.DSASM.Constants.kInvalidIndex)
                        {
                            retArgs.Errors.Add(new GraphUpdateReadyEventArgs.ErrorObject {
                                Message = msg, Id = 0
                            });
                            continue;
                        }

                        string varName = GetVarNameFromCode(lineNo, code);

                        foreach (var ssnode in syncData.AddedNodes)
                        {
                            if (ssnode.Content.Contains(varName))
                            {
                                uint id = ssnode.Id;

                                retArgs.Errors.Add(new GraphUpdateReadyEventArgs.ErrorObject {
                                    Message = msg, Id = id
                                });
                                break;
                            }
                        }
                        if (retArgs.Errors.Count == 0)
                        {
                            foreach (var ssnode in syncData.ModifiedNodes)
                            {
                                if (ssnode.Content.Contains(varName))
                                {
                                    uint id = ssnode.Id;

                                    retArgs.Errors.Add(new GraphUpdateReadyEventArgs.ErrorObject {
                                        Message = msg, Id = id
                                    });
                                    break;
                                }
                            }
                        }
                    }
                }
                if (runner.compileState.BuildStatus.WarningCount > 0)
                {
                    if (retArgs == null)
                    {
                        retArgs = new GraphUpdateReadyEventArgs(syncDataReturn);
                    }

                    foreach (var warning in runner.compileState.BuildStatus.Warnings)
                    {
                        string msg    = warning.msg;
                        int    lineNo = warning.line;

                        // TODO: How can the lineNo be invalid ?
                        if (lineNo == ProtoCore.DSASM.Constants.kInvalidIndex)
                        {
                            retArgs.Warnings.Add(new GraphUpdateReadyEventArgs.ErrorObject {
                                Message = msg, Id = 0
                            });
                            continue;
                        }

                        string varName = GetVarNameFromCode(lineNo, code);

                        // This array should be empty for Build errors

                        /*foreach (var ssnode in syncDataReturn.ModifiedNodes)
                         * {
                         *  if(ssnode.Content.Contains(varName))
                         *  {
                         *      uint id = ssnode.Id;
                         *
                         *      retArgs.Warnings.Add(new GraphUpdateReadyEventArgs.ErrorObject { Message = msg, Id = id });
                         *      break;
                         *  }
                         * }*/
                        foreach (var kvp in modifiedGuidList)
                        {
                            // Get the uid recognized by the graphIDE
                            uint   guid = kvp.Key;
                            string name = kvp.Value;
                            if (name.Equals(varName))
                            {
                                retArgs.Warnings.Add(new GraphUpdateReadyEventArgs.ErrorObject {
                                    Message = msg, Id = runner.graphCompiler.GetRealUID(guid)
                                });
                                break;
                            }
                        }

                        if (retArgs.Warnings.Count == 0)
                        {
                            LogWarningsFromInputNodes(retArgs, varName, msg);
                        }
                    }
                }
            }
コード例 #19
0
ファイル: LiveRunner.cs プロジェクト: junmendoza/designscript
            private void ReportRuntimeWarnings(string code, SynchronizeData syncDataReturn, Dictionary<uint, string> modifiedGuidList, ref GraphUpdateReadyEventArgs retArgs)
            {
                //GraphUpdateReadyEventArgs retArgs = null;

                if (runner.runnerCore.RuntimeStatus.Warnings.Count > 0)
                {
                    if(retArgs == null)
                        retArgs = new GraphUpdateReadyEventArgs(syncDataReturn);

                    foreach (var err in runner.runnerCore.RuntimeStatus.Warnings)
                    {
                        string msg = err.message;
                        int lineNo = err.Line;

                        // TODO: How can the lineNo be invalid ?
                        if (lineNo == ProtoCore.DSASM.Constants.kInvalidIndex)
                        {
                            retArgs.Warnings.Add(new GraphUpdateReadyEventArgs.ErrorObject { Message = msg, Id = 0 });
                            continue;
                        }

                        string varName = GetVarNameFromCode(lineNo, code);

                        foreach (var kvp in modifiedGuidList)
                        {
                            // Get the uid recognized by the graphIDE
                            uint guid = kvp.Key;
                            string name = kvp.Value;
                            if(name.Equals(varName))
                            {
                                retArgs.Warnings.Add(new GraphUpdateReadyEventArgs.ErrorObject { Message = msg, Id =  runner.graphCompiler.GetRealUID(guid)});
                                break;
                            }
                        }

                        if (retArgs.Warnings.Count == 0)
                        {
                            LogWarningsFromInputNodes(retArgs, varName, msg);
                        }
                    }
                }
            }