当前位置: 首页>>代码示例>>C#>>正文


C# DataFrame.CloneFrame方法代码示例

本文整理汇总了C#中DataFrame.CloneFrame方法的典型用法代码示例。如果您正苦于以下问题:C# DataFrame.CloneFrame方法的具体用法?C# DataFrame.CloneFrame怎么用?C# DataFrame.CloneFrame使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在DataFrame的用法示例。


在下文中一共展示了DataFrame.CloneFrame方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: OnLogPacket

        /// <summary>
        /// Log a packet from the graph
        /// </summary>
        /// <param name="tag">A textual tag for the frame</param>
        /// <param name="color">The color to display the frame (if applicable)</param>
        /// <param name="frame">The frame to log, note this must be cloned to preserve its value</param>
        /// <param name="logAsBytes">Indicates whether the packet should be logged as a byte array</param>
        /// <param name="path">Selection path for which part of the packet to log</param>
        private void OnLogPacket(string tag, ColorValue color, DataFrame frame, bool logAsBytes, string path)
        {
            EventHandler<LogPacketEventArgs> logPacketEvent = LogPacketEvent;

            if (logPacketEvent != null)
            {
                DataFrame logFrame = null;
                if (path != "/")
                {
                    DataNode node = frame.SelectSingleNode(path);

                    if (node != null)
                    {
                        node = node.CloneNode();

                        DataKey key = node as DataKey;
                        if (key != null)
                        {
                            logFrame = new DataFrame(key);
                        }
                        else
                        {
                            logFrame = new DataFrame();
                            logFrame.Root.AddSubNode(node);
                        }

                        if (logAsBytes)
                        {
                            logFrame.ConvertToBasic();
                        }
                    }
                }
                else
                {
                    logFrame = logAsBytes ? new DataFrame(frame.ToArray()) : frame.CloneFrame();
                }

                if (logFrame != null)
                {
                    logPacketEvent(this, new LogPacketEventArgs(tag, Uuid, logFrame, color, NetworkDescription));
                }
            }
        }
开发者ID:michyer,项目名称:canape,代码行数:51,代码来源:NetGraph.cs

示例2: AddPacket

        /// <summary>
        /// Add a simple packet with a tag and a frame
        /// </summary>
        /// <param name="tag">The tag to add</param>
        /// <param name="frame">The frame to add, this will be cloned before putting in log</param>
        /// <returns>The logged packet</returns>
        public LogPacket AddPacket(string tag, DataFrame frame)
        {
            LogPacket ret = new LogPacket(tag, Guid.NewGuid(), "Packet Log", frame.CloneFrame(), ColorValue.White);
            AddPacket(ret);

            return ret;
        }
开发者ID:michyer,项目名称:canape,代码行数:13,代码来源:PacketLogDocument.cs

示例3: SetFrame

        /// <summary>
        /// Set the frame to edit
        /// </summary>
        /// <param name="frame">The data frame</param>        
        /// <param name="selector">Root selection path</param>
        /// <param name="color">The colour to display the frame in (if applicable)</param>
        public void SetFrame(DataFrame frame, string selector, Color color)
        {
            toolStripButtonSnapshot.Enabled = false;
            toolStripButtonUndo.Enabled = false;
            _oldFrame = frame;
            _currFrame = frame.CloneFrame();
            _selector = selector;
            _color = color;

            UpdateFrame();
        }
开发者ID:michyer,项目名称:canape,代码行数:17,代码来源:SingleFrameEditorControl.cs

示例4: WriteOutput

        /// <summary>
        /// Internal write function
        /// </summary>
        /// <param name="frame">The frame to write</param>
        /// <param name="nodes">The list of nodes to write to</param>
        private void WriteOutput(DataFrame frame, OutputNode[] nodes)
        {
            try
            {
                // Leave this like it is for legacy reasons.
                if (frame == null)
                {
                    foreach (OutputNode node in nodes)
                    {
                        node.Node.Shutdown(this);
                    }
                }
                else
                {
                    _outputPacketCount++;
                    _byteCount += frame.Length;
                    if (LogOutput)
                    {
                        LogPacket(String.Format("{0} Output", Name), new ColorValue(255, 255, 255), frame, false);
                    }

                    if (nodes.Length == 1)
                    {
                        // If we only have one output then don't need to clone
                        nodes[0].Node.Input(frame);
                    }
                    else
                    {
                        foreach (OutputNode node in nodes)
                        {
                            DataFrame newFrame = frame.CloneFrame();

                            node.Node.Input(newFrame);
                        }
                    }
                }
            }
            catch (ThreadAbortException)
            {
                // If we get a thread abort it probably means we want to go away
                throw;
            }
            catch (Exception ex)
            {
                // Back stop, do nothing but write to log
                LogException(ex);
            }
        }
开发者ID:michyer,项目名称:canape,代码行数:53,代码来源:BasePipelineNode.cs


注:本文中的DataFrame.CloneFrame方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。