Beispiel #1
0
        /// <summary>
        /// Override event to capture its data and store it in the protobuf
        /// </summary>
        public override void PipExecutionDirectoryOutputs(PipExecutionDirectoryOutputs data)
        {
            foreach (var(directoryArtifact, fileArtifactArray) in data.DirectoryOutputs)
            {
                foreach (var file in fileArtifactArray)
                {
                    m_dynamicFileProducerMap.Add(file, data.PipId.Value);
                }

                var value = new PipExecutionDirectoryOutputsEvent
                {
                    WorkerID          = WorkerID.Value,
                    PipID             = data.PipId.Value,
                    DirectoryArtifact = directoryArtifact.ToDirectoryArtifact(PathTable, m_nameExpander),
                };

                value.FileArtifactArray.AddRange(fileArtifactArray.Select(
                                                     file => file.ToFileArtifact(PathTable, m_nameExpander)));

                var key = new EventKey
                {
                    EventTypeID = Xldb.Proto.ExecutionEventId.PipExecutionDirectoryOutputs,
                    PipId       = data.PipId.Value,
                    PipExecutionDirectoryOutputKey = AbsolutePathToXldbString(directoryArtifact.Path)
                };

                var keyArr   = key.ToByteArray();
                var valueArr = value.ToByteArray();
                WriteToDb(keyArr, valueArr, XldbDataStore.EventColumnFamilyName);
                AddToDbStorageDictionary(DBStoredTypes.PipExecutionDirectoryOutputs, keyArr.Length + valueArr.Length);
            }
        }
Beispiel #2
0
        /// <nodoc />
        public static PipExecutionDirectoryOutputsEvent ToPipExecutionDirectoryOutputsEvent(this PipExecutionDirectoryOutputs data, uint workerID, PathTable pathTable)
        {
            var pipExecDirectoryOutputEvent = new PipExecutionDirectoryOutputsEvent
            {
                WorkerID = workerID
            };

            foreach (var(directoryArtifact, fileArtifactArray) in data.DirectoryOutputs)
            {
                var directoryOutput = new DirectoryOutput()
                {
                    DirectoryArtifact = directoryArtifact.ToDirectoryArtifact(pathTable)
                };

                directoryOutput.FileArtifactArray.AddRange(
                    fileArtifactArray.Select(
                        file => file.ToFileArtifact(pathTable)));
                pipExecDirectoryOutputEvent.DirectoryOutput.Add(directoryOutput);
            }

            return(pipExecDirectoryOutputEvent);
        }