new JobReportReceiver: propagate libzypp messages
authorMichael Andres <ma@suse.de>
Thu, 10 Apr 2014 17:19:34 +0000 (19:19 +0200)
committerMichael Andres <ma@suse.de>
Thu, 10 Apr 2014 17:19:34 +0000 (19:19 +0200)
src/CMakeLists.txt
src/callbacks/job.h [new file with mode: 0644]
src/main.cc

index 0d48079..1ef51bd 100644 (file)
@@ -28,6 +28,7 @@ SET (zypper_HEADERS
   callbacks/media.h
   callbacks/rpm.h
   callbacks/repo.h
+  callbacks/job.h
 )
 
 SET( zypper_SRCS
diff --git a/src/callbacks/job.h b/src/callbacks/job.h
new file mode 100644 (file)
index 0000000..24e8a0a
--- /dev/null
@@ -0,0 +1,67 @@
+/*---------------------------------------------------------------------------*\
+                          ____  _ _ __ _ __  ___ _ _
+                         |_ / || | '_ \ '_ \/ -_) '_|
+                         /__|\_, | .__/ .__/\___|_|
+                             |__/|_|  |_|
+\*---------------------------------------------------------------------------*/
+
+#ifndef ZMART_JOB_CALLBACKS_H
+#define ZMART_JOB_CALLBACKS_H
+
+#include <iostream>
+
+#include <zypp/base/Logger.h>
+#include <zypp/base/String.h>
+#include <zypp/ZYppCallbacks.h>
+
+#include "Zypper.h"
+#include "output/prompt.h"
+
+///////////////////////////////////////////////////////////////////
+namespace ZmartRecipients
+{
+  ///////////////////////////////////////////////////////////////////
+  /// \class JobReportReceiver
+  /// \brief Receive generic notification callbacks
+  ///////////////////////////////////////////////////////////////////
+  struct JobReportReceiver : public callback::ReceiveReport<JobReport>
+  {
+    virtual bool message( MsgType type_r, const std::string & msg_r ) const
+    {
+      Out & out( Zypper::instance()->out() );
+      switch ( type_r.asEnum() )
+      {
+       case MsgType::info:
+         out.info( msg_r );
+         break;
+       case MsgType::warning:
+         out.warning( msg_r );
+         break;
+       case MsgType::error:
+         out.error( msg_r );
+         break;
+      }
+      return true;
+    }
+  };
+} // namespace ZmartRecipients
+///////////////////////////////////////////////////////////////////
+
+class JobCallbacks
+{
+  public:
+    JobCallbacks()
+    {
+      _jobReport.connect();
+    }
+
+    ~JobCallbacks()
+    {
+      _jobReport.disconnect();
+    }
+
+  private:
+    ZmartRecipients::JobReportReceiver _jobReport;
+};
+
+#endif // ZMART_JOB_CALLBACKS_H
index 74fea05..681aa8a 100644 (file)
@@ -13,6 +13,7 @@
 #include "callbacks/repo.h"
 #include "callbacks/media.h"
 #include "callbacks/locks.h"
+#include "callbacks/job.h"
 #include "output/OutNormal.h"
 #include "utils/messages.h"
 
@@ -90,6 +91,7 @@ int main(int argc, char **argv)
     static KeyRingCallbacks keyring_callbacks;
     static DigestCallbacks digest_callbacks;
     static LocksCallbacks locks_callbacks;
+    static JobCallbacks job_callbacks;
   }
   catch (const zypp::Exception & e)
   {