You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by ba...@apache.org on 2020/04/03 16:05:40 UTC

[nifi-minifi-cpp] branch master updated: MINIFICPP-1187 - Add functionality to ConsumeWindowsEventLog to read old events

This is an automated email from the ASF dual-hosted git repository.

bakaid pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nifi-minifi-cpp.git


The following commit(s) were added to refs/heads/master by this push:
     new 0e9b77c  MINIFICPP-1187 - Add functionality to ConsumeWindowsEventLog to read old events
0e9b77c is described below

commit 0e9b77cbef2cf3d3fcf1d9a3afb5f196d0068c09
Author: amarmer <am...@gmail.com>
AuthorDate: Wed Apr 1 02:02:39 2020 -0700

    MINIFICPP-1187 - Add functionality to ConsumeWindowsEventLog to read old events
    
    Signed-off-by: Daniel Bakai <ba...@apache.org>
    
    This closes #748
---
 extensions/windows-event-log/Bookmark.cpp             |  4 ++--
 extensions/windows-event-log/Bookmark.h               |  2 +-
 .../windows-event-log/ConsumeWindowsEventLog.cpp      | 19 +++++++++++++++----
 extensions/windows-event-log/ConsumeWindowsEventLog.h |  1 +
 4 files changed, 19 insertions(+), 7 deletions(-)

diff --git a/extensions/windows-event-log/Bookmark.cpp b/extensions/windows-event-log/Bookmark.cpp
index e9ccd83..d727de2 100644
--- a/extensions/windows-event-log/Bookmark.cpp
+++ b/extensions/windows-event-log/Bookmark.cpp
@@ -11,7 +11,7 @@ namespace nifi {
 namespace minifi {
 namespace processors {
 
-Bookmark::Bookmark(const std::wstring& channel, const std::wstring& query, const std::string& bookmarkRootDir, const std::string& uuid, std::shared_ptr<logging::Logger> logger)
+Bookmark::Bookmark(const std::wstring& channel, const std::wstring& query, const std::string& bookmarkRootDir, const std::string& uuid, bool processOldEvents, std::shared_ptr<logging::Logger> logger)
   :logger_(logger) {
   if (!createUUIDDir(bookmarkRootDir, uuid, filePath_))
     return;
@@ -48,7 +48,7 @@ Bookmark::Bookmark(const std::wstring& channel, const std::wstring& query, const
   }
   const utils::ScopeGuard guard_hEventResults([hEventResults]() { EvtClose(hEventResults); });
 
-  if (!EvtSeek(hEventResults, 0, 0, 0, EvtSeekRelativeToLast)) {
+  if (!EvtSeek(hEventResults, 0, 0, 0, processOldEvents? EvtSeekRelativeToFirst : EvtSeekRelativeToLast)) {
     LOG_LAST_ERROR(EvtSeek);
     return;
   }
diff --git a/extensions/windows-event-log/Bookmark.h b/extensions/windows-event-log/Bookmark.h
index f89360b..02e47bb 100644
--- a/extensions/windows-event-log/Bookmark.h
+++ b/extensions/windows-event-log/Bookmark.h
@@ -19,7 +19,7 @@ namespace processors {
 class Bookmark
 {
 public:
-  Bookmark(const std::wstring& channel, const std::wstring& query, const std::string& bookmarkRootDir, const std::string& uuid, std::shared_ptr<logging::Logger> logger);
+  Bookmark(const std::wstring& channel, const std::wstring& query, const std::string& bookmarkRootDir, const std::string& uuid, bool processOldEvents, std::shared_ptr<logging::Logger> logger);
   ~Bookmark();
   operator bool() const;
   EVT_HANDLE getBookmarkHandleFromXML();
diff --git a/extensions/windows-event-log/ConsumeWindowsEventLog.cpp b/extensions/windows-event-log/ConsumeWindowsEventLog.cpp
index cbcfbab..c7f41c7 100644
--- a/extensions/windows-event-log/ConsumeWindowsEventLog.cpp
+++ b/extensions/windows-event-log/ConsumeWindowsEventLog.cpp
@@ -149,6 +149,13 @@ core::Property ConsumeWindowsEventLog::BookmarkRootDirectory(
   withDescription("Directory which contains processor state data.")->
   build());
 
+core::Property ConsumeWindowsEventLog::ProcessOldEvents(
+  core::PropertyBuilder::createProperty("Process Old Events")->
+  isRequired(true)->
+  withDefaultValue<bool>(false)->
+  withDescription("This property defines if old events (which are created before first time server is started) should be processed.")->
+  build());
+
 core::Relationship ConsumeWindowsEventLog::Success("success", "Relationship for successfully consumed events.");
 
 ConsumeWindowsEventLog::ConsumeWindowsEventLog(const std::string& name, utils::Identifier uuid)
@@ -173,9 +180,10 @@ ConsumeWindowsEventLog::~ConsumeWindowsEventLog() {
 
 void ConsumeWindowsEventLog::initialize() {
   //! Set the supported properties
-  setSupportedProperties(
-    {Channel, Query, MaxBufferSize, InactiveDurationToReconnect, IdentifierMatcher, IdentifierFunction, ResolveAsAttributes, EventHeaderDelimiter, EventHeader, OutputFormat, BatchCommitSize, BookmarkRootDirectory}
-  );
+  setSupportedProperties({
+     Channel, Query, MaxBufferSize, InactiveDurationToReconnect, IdentifierMatcher, IdentifierFunction, ResolveAsAttributes, 
+     EventHeaderDelimiter, EventHeader, OutputFormat, BatchCommitSize, BookmarkRootDirectory, ProcessOldEvents
+  });
 
   //! Set the supported relationships
   setSupportedRelationships({Success});
@@ -245,6 +253,9 @@ void ConsumeWindowsEventLog::onSchedule(const std::shared_ptr<core::ProcessConte
   context->getProperty(Query.getName(), query);
   wstrQuery_ = std::wstring(query.begin(), query.end());
 
+  bool processOldEvents{};
+  context->getProperty(ProcessOldEvents.getName(), processOldEvents);
+
   if (!pBookmark_) {
     std::string bookmarkDir;
     context->getProperty(BookmarkRootDirectory.getName(), bookmarkDir);
@@ -252,7 +263,7 @@ void ConsumeWindowsEventLog::onSchedule(const std::shared_ptr<core::ProcessConte
       logger_->log_error("State Directory is empty");
       return;
     }
-    pBookmark_ = std::make_unique<Bookmark>(wstrChannel_, wstrQuery_, bookmarkDir, getUUIDStr(), logger_);
+    pBookmark_ = std::make_unique<Bookmark>(wstrChannel_, wstrQuery_, bookmarkDir, getUUIDStr(), processOldEvents, logger_);
     if (!*pBookmark_) {
       pBookmark_.reset();
       return;
diff --git a/extensions/windows-event-log/ConsumeWindowsEventLog.h b/extensions/windows-event-log/ConsumeWindowsEventLog.h
index 4085b76..02ce868 100644
--- a/extensions/windows-event-log/ConsumeWindowsEventLog.h
+++ b/extensions/windows-event-log/ConsumeWindowsEventLog.h
@@ -80,6 +80,7 @@ public:
   static core::Property OutputFormat;
   static core::Property BatchCommitSize;
   static core::Property BookmarkRootDirectory;
+  static core::Property ProcessOldEvents;
 
   //! Supported Relationships
   static core::Relationship Success;