1*146d5791SDean Michael Berris //===- FDRRecordConsumer.h - XRay Flight Data Recorder Mode Records -------===// 2*146d5791SDean Michael Berris // 3*146d5791SDean Michael Berris // The LLVM Compiler Infrastructure 4*146d5791SDean Michael Berris // 5*146d5791SDean Michael Berris // This file is distributed under the University of Illinois Open Source 6*146d5791SDean Michael Berris // License. See LICENSE.TXT for details. 7*146d5791SDean Michael Berris // 8*146d5791SDean Michael Berris //===----------------------------------------------------------------------===// 9*146d5791SDean Michael Berris #include "llvm/XRay/FDRRecordConsumer.h" 10*146d5791SDean Michael Berris 11*146d5791SDean Michael Berris namespace llvm { 12*146d5791SDean Michael Berris namespace xray { 13*146d5791SDean Michael Berris 14*146d5791SDean Michael Berris Error LogBuilderConsumer::consume(std::unique_ptr<Record> R) { 15*146d5791SDean Michael Berris if (!R) 16*146d5791SDean Michael Berris return createStringError( 17*146d5791SDean Michael Berris std::make_error_code(std::errc::invalid_argument), 18*146d5791SDean Michael Berris "Must not call RecordConsumer::consume() with a null pointer."); 19*146d5791SDean Michael Berris Records.push_back(std::move(R)); 20*146d5791SDean Michael Berris return Error::success(); 21*146d5791SDean Michael Berris } 22*146d5791SDean Michael Berris 23*146d5791SDean Michael Berris Error PipelineConsumer::consume(std::unique_ptr<Record> R) { 24*146d5791SDean Michael Berris if (!R) 25*146d5791SDean Michael Berris return createStringError( 26*146d5791SDean Michael Berris std::make_error_code(std::errc::invalid_argument), 27*146d5791SDean Michael Berris "Must not call RecordConsumer::consume() with a null pointer."); 28*146d5791SDean Michael Berris 29*146d5791SDean Michael Berris // We apply all of the visitors in order, and concatenate errors 30*146d5791SDean Michael Berris // appropriately. 31*146d5791SDean Michael Berris Error Result = Error::success(); 32*146d5791SDean Michael Berris for (auto *V : Visitors) 33*146d5791SDean Michael Berris Result = joinErrors(std::move(Result), R->apply(*V)); 34*146d5791SDean Michael Berris return Result; 35*146d5791SDean Michael Berris } 36*146d5791SDean Michael Berris 37*146d5791SDean Michael Berris } // namespace xray 38*146d5791SDean Michael Berris } // namespace llvm 39