in libminifi/src/provenance/Provenance.cpp [81:242]
bool ProvenanceEventRecordImpl::serialize(io::OutputStream& output_stream) {
{
const auto ret = output_stream.write(this->uuid_);
if (ret == 0 || io::isError(ret)) {
return false;
}
}
{
uint32_t eventType = this->_eventType;
const auto ret = output_stream.write(eventType);
if (ret != 4) {
return false;
}
}
{
uint64_t event_time_ms = std::chrono::duration_cast<std::chrono::milliseconds>(_eventTime.time_since_epoch()).count();
const auto ret = output_stream.write(event_time_ms);
if (ret != 8) {
return false;
}
}
{
uint64_t entry_date_ms = std::chrono::duration_cast<std::chrono::milliseconds>(_entryDate.time_since_epoch()).count();
const auto ret = output_stream.write(entry_date_ms);
if (ret != 8) {
return false;
}
}
{
uint64_t event_duration_ms = this->_eventDuration.count();
const auto ret = output_stream.write(event_duration_ms);
if (ret != 8) {
return false;
}
}
{
uint64_t lineage_start_date_ms = std::chrono::duration_cast<std::chrono::milliseconds>(_lineageStartDate.time_since_epoch()).count();
const auto ret = output_stream.write(lineage_start_date_ms);
if (ret != 8) {
return false;
}
}
{
const auto ret = output_stream.write(this->_componentId);
if (ret == 0 || io::isError(ret)) {
return false;
}
}
{
const auto ret = output_stream.write(this->_componentType);
if (ret == 0 || io::isError(ret)) {
return false;
}
}
{
const auto ret = output_stream.write(this->flow_uuid_);
if (ret == 0 || io::isError(ret)) {
return false;
}
}
{
const auto ret = output_stream.write(this->_details);
if (ret == 0 || io::isError(ret)) {
return false;
}
}
// write flow attributes
{
const auto numAttributes = gsl::narrow<uint32_t>(this->_attributes.size());
const auto ret = output_stream.write(numAttributes);
if (ret != 4) {
return false;
}
}
for (const auto& itAttribute : _attributes) {
{
const auto ret = output_stream.write(itAttribute.first);
if (ret == 0 || io::isError(ret)) {
return false;
}
}
{
const auto ret = output_stream.write(itAttribute.second);
if (ret == 0 || io::isError(ret)) {
return false;
}
}
}
{
const auto ret = output_stream.write(this->_contentFullPath);
if (ret == 0 || io::isError(ret)) {
return false;
}
}
{
const auto ret = output_stream.write(this->_size);
if (ret != 8) {
return false;
}
}
{
const auto ret = output_stream.write(this->_offset);
if (ret != 8) {
return false;
}
}
{
const auto ret = output_stream.write(this->_sourceQueueIdentifier);
if (ret == 0 || io::isError(ret)) {
return false;
}
}
if (this->_eventType == ProvenanceEventRecord::FORK || this->_eventType == ProvenanceEventRecord::CLONE || this->_eventType == ProvenanceEventRecord::JOIN) {
// write UUIDs
{
const auto parent_uuids_count = gsl::narrow<uint32_t>(this->_parentUuids.size());
const auto ret = output_stream.write(parent_uuids_count);
if (ret != 4) {
return false;
}
}
for (const auto& parentUUID : _parentUuids) {
const auto ret = output_stream.write(parentUUID);
if (ret == 0 || io::isError(ret)) {
return false;
}
}
{
const auto children_uuids_count = gsl::narrow<uint32_t>(this->_childrenUuids.size());
const auto ret = output_stream.write(children_uuids_count);
if (ret != 4) {
return false;
}
}
for (const auto& childUUID : _childrenUuids) {
const auto ret = output_stream.write(childUUID);
if (ret == 0 || io::isError(ret)) {
return false;
}
}
} else if (this->_eventType == ProvenanceEventRecord::SEND || this->_eventType == ProvenanceEventRecord::FETCH) {
const auto ret = output_stream.write(this->_transitUri);
if (ret == 0 || io::isError(ret)) {
return false;
}
} else if (this->_eventType == ProvenanceEventRecord::RECEIVE) {
{
const auto ret = output_stream.write(this->_transitUri);
if (ret == 0 || io::isError(ret)) {
return false;
}
}
{
const auto ret = output_stream.write(this->_sourceSystemFlowFileIdentifier);
if (ret == 0 || io::isError(ret)) {
return false;
}
}
}
return true;
}