/// <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); } }
/// <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); }