コード例 #1
0
        protected override void ProcessRecord()
        {
            base.ProcessRecord();
            Dictionary <string, object> inputObject  = TypeConversion.PSObjectToDict(InputObject);
            Dictionary <string, object> outputObject = Mapping.GetRow(inputObject);

            WriteObject(TypeConversion.DictToPSObject(outputObject));
        }
コード例 #2
0
        protected override void EndProcessing()
        {
            base.EndProcessing();
            Dictionary <string, object> output = parser.ReadEnd();

            if (output != null)
            {
                WriteObject(TypeConversion.DictToPSObject(output));
            }
        }
コード例 #3
0
        protected override void ProcessRecord()
        {
            base.ProcessRecord();
            Dictionary <string, object> output = parser.ReadLine(inputString);

            if (output != null)
            {
                WriteObject(TypeConversion.DictToPSObject(output));
            }
        }
コード例 #4
0
ファイル: ImportIDX.cs プロジェクト: alexemorris/ED-Tools
        protected override void ProcessRecord()
        {
            base.ProcessRecord();

            if (!parallel)
            {
                string line;
                if (psEncoding == FileSystemCmdletProviderEncoding.Default)
                {
                    reader = new StreamReader(stream, true);
                }
                else
                {
                    reader = new StreamReader(stream, CmdletEncoding.Convert(psEncoding));
                }

                while ((line = reader.ReadLine()) != null)
                {
                    Dictionary <string, object> output = parser.ReadLine(line);
                    if (output != null)
                    {
                        WriteObject(TypeConversion.DictToPSObject(output));
                    }
                }
            }
            else
            {
                ConcurrentQueue <PSObject> outputQueue = new ConcurrentQueue <PSObject>();
                Task processingTask = Task.Factory.StartNew(() =>
                                                            System.Threading.Tasks.Parallel.ForEach(ParseIDX.splitIDX(stream, CmdletEncoding.Convert(psEncoding)), (byte[] docBytes) => {
                    string doc = CmdletEncoding.Convert(psEncoding).GetString(docBytes);
                    Dictionary <string, object> parsed = ParseIDX.ParseBlock(doc);
                    outputQueue.Enqueue(TypeConversion.DictToPSObject(parsed));
                })
                                                            );
                while (!processingTask.IsCompleted || !outputQueue.IsEmpty)
                {
                    if (outputQueue.TryDequeue(out PSObject output))
                    {
                        WriteObject(output);
                    }
                    else
                    {
                        System.Threading.Thread.Yield();
                    }
                }
            }
        }
コード例 #5
0
 protected override void ProcessRecord()
 {
     base.ProcessRecord();
     if (header == null && first)
     {
         parser.ReadHeader(InputString);
         first = false;
     }
     else
     {
         try {
             Dictionary <string, object> output = parser.ReadLine(InputString);
             WriteObject(TypeConversion.DictToPSObject(output));
         } catch (InvalidDataException err) {
             WriteWarning(err.Message);
         }
     }
 }
コード例 #6
0
 protected override void ProcessRecord()
 {
     base.ProcessRecord();
     while (currentLine != null)
     {
         try {
             Dictionary <string, object> output = parser.ReadLine(currentLine);
             if (Mapping != null)
             {
                 output = Mapping.GetRow(output);
             }
             WriteObject(TypeConversion.DictToPSObject(output));
         } catch (InvalidDataException err) {
             WriteWarning(err.Message);
         }
         currentLine = reader.ReadLine();
     }
 }