/// <summary>
        /// Function called to handle the reading of the stream
        /// </summary>
        /// <param name="stm">The reading stream</param>
        protected override void OnRead(PipelineStream stm)
        {
            try
            {
                while (!stm.Eof)
                {
                    DynamicStreamDataKey2 key = new DynamicStreamDataKey2("Root", Container, Graph.Logger, State);

                    DataReader reader = new DataReader(stm);

                    key.FromReader(reader);

                    // Only fill in the frame if we read something, should this exit if it continues to read nothing?
                    if (reader.ByteCount > 0)
                    {
                        WriteOutput(new DataFrame(key));
                    }
                }
            }
            catch (ThreadAbortException)
            {
                throw;
            }
            catch (EndOfStreamException)
            {
                // End of stream, do nothing
            }
            catch (Exception e)
            {
                LogException(e);
            }
        }
        /// <summary>
        /// Function called to handle the reading of the stream
        /// </summary>
        /// <param name="stm">The reading stream</param>
        protected override void OnRead(PipelineStream stm)
        {
            try
            {
                while (!stm.Eof)
                {
                    DynamicStreamDataKey2 key = new DynamicStreamDataKey2("Root", Container, Graph.Logger, State);

                    DataReader reader = new DataReader(stm);

                    key.FromReader(reader);

                    // Only fill in the frame if we read something, should this exit if it continues to read nothing?
                    if (reader.ByteCount > 0)
                    {
                        WriteOutput(new DataFrame(key));
                    }
                }
            }
            catch (ThreadAbortException)
            {
                throw;
            }
            catch (EndOfStreamException)
            {
                // End of stream, do nothing
            }
            catch (Exception e)
            {
                LogException(e);
            }
        }
Beispiel #3
0
        private static IEnumerable <DataFrame> ReadFrames(IDataAdapter client, DynamicScriptContainer container, Logger logger, object config)
        {
            DataReader reader = new DataReader(new DataAdapterToStream(client));

            while (!reader.Eof)
            {
                DynamicStreamDataKey2 key = new DynamicStreamDataKey2("Root", container, logger, config);

                try
                {
                    key.FromReader(reader);
                }
                catch (ThreadAbortException)
                {
                    throw;
                }
                catch (EndOfStreamException)
                {
                    // End of stream, do nothing
                }
                catch (Exception e)
                {
                    logger.LogException(e);
                    yield break;
                }

                // Only fill in the frame if we read something, should this exit if it continues to read nothing?
                if (reader.ByteCount > 0)
                {
                    yield return(new DataFrame(key));
                }
            }
        }
        /// <summary>
        /// Method called when a new frame arraives
        /// </summary>
        /// <param name="frame">The frame</param>
        protected override void OnInput(DataFrame frame)
        {
            DataNode[] nodes = frame.SelectNodes(SelectionPath);

            foreach (DataNode node in nodes)
            {
                try
                {
                    MemoryStream stm = new MemoryStream(node.ToArray());
                    DataReader reader = new DataReader(stm);
                    string name = node.Name;
                    DataKey parentKey = node.Parent;
                    node.RemoveNode();

                    while (stm.Position < stm.Length)
                    {
                        DynamicStreamDataKey2 key = new DynamicStreamDataKey2(name, Container, Graph.Logger, State);

                        reader.ByteCount = 0;
                        key.FromReader(reader);

                        // The reader clearly didn't care
                        if (reader.ByteCount == 0)
                        {
                            break;
                        }

                        parentKey.AddSubNode(key);
                        frame.Current = key;
                    }
                }
                catch (EndOfStreamException)
                {
                }
                catch (ThreadAbortException)
                {
                    throw;
                }
                catch (Exception ex)
                {
                    LogException(ex);
                }
            }

            WriteOutput(frame);
        }
Beispiel #5
0
        private static IEnumerable<DataFrame> ReadFrames(IDataAdapter client, DynamicScriptContainer container, Logger logger, object config)
        {
            DataReader reader = new DataReader(new DataAdapterToStream(client));

            while (!reader.Eof)
            {
                DynamicStreamDataKey2 key = new DynamicStreamDataKey2("Root", container, logger, config);

                try
                {
                    key.FromReader(reader);
                }
                catch (ThreadAbortException)
                {
                    throw;
                }
                catch (EndOfStreamException)
                {
                    // End of stream, do nothing
                }
                catch (Exception e)
                {
                    logger.LogException(e);
                    yield break;
                }

                // Only fill in the frame if we read something, should this exit if it continues to read nothing?
                if (reader.ByteCount > 0)
                {
                    yield return new DataFrame(key);
                }
            }
        }