media verifier (rough)
authorStanislav Visnovsky <visnov@suse.cz>
Thu, 2 Feb 2006 16:40:40 +0000 (16:40 +0000)
committerStanislav Visnovsky <visnov@suse.cz>
Thu, 2 Feb 2006 16:40:40 +0000 (16:40 +0000)
zypp/media/Makefile.am
zypp/media/SuseMediaVerifier.cc [new file with mode: 0644]
zypp/media/SuseMediaVerifier.h [new file with mode: 0644]

index c845f93..f9eb8fd 100644 (file)
@@ -23,7 +23,8 @@ mediainclude_HEADERS =                \
        MediaCIFS.h             \
        ProxyInfo.h             \
        MediaCurl.h             \
-       MediaManager.h
+       MediaManager.h          \
+       SuseMediaVerifier.h
 
 
 noinst_LTLIBRARIES =   lib@PACKAGE@_media.la
@@ -43,7 +44,8 @@ lib@PACKAGE@_media_la_SOURCES = \
        MediaCIFS.cc            \
        ProxyInfo.cc            \
        MediaCurl.cc            \
-       MediaManager.cc
+       MediaManager.cc         \
+       SuseMediaVerifier.cc
 
 
 lib@PACKAGE@_media_la_LIBADD = proxyinfo/lib@PACKAGE@_media_proxyinfo.la \
diff --git a/zypp/media/SuseMediaVerifier.cc b/zypp/media/SuseMediaVerifier.cc
new file mode 100644 (file)
index 0000000..de2eeb3
--- /dev/null
@@ -0,0 +1,62 @@
+/*---------------------------------------------------------------------\
+|                          ____ _   __ __ ___                          |
+|                         |__  / \ / / . \ . \                         |
+|                           / / \ V /|  _/  _/                         |
+|                          / /__ | | | | | |                           |
+|                         /_____||_| |_| |_|                           |
+|                                                                      |
+\---------------------------------------------------------------------*/
+/** \file       zypp/parser/media/SuseMediaVerifier.cc
+ *
+*/
+
+#include "zypp/media/SuseMediaVerifier.h"
+#include "zypp/media/MediaManager.h"
+#include "zypp/base/String.h"
+#include "zypp/base/Logger.h"
+#include "zypp/Pathname.h"
+
+#include <string>
+#include <list>
+
+namespace zypp {
+
+  namespace media {
+  
+    SuseMediaVerifier::SuseMediaVerifier() : MediaVerifierBase() {}
+
+    SuseMediaVerifier::~SuseMediaVerifier() {}
+
+    bool SuseMediaVerifier::isDesiredMedia(const MediaAccessRef &ref, MediaNr mediaNr)
+    {
+       DBG << "isDesiredMedia(): for media nr " << mediaNr << std::endl;
+
+       if( !ref)
+           DBG << "isDesiredMedia(): invalid media handle" << std::endl;
+
+       std::list<std::string> lst;
+    
+       Pathname dir("/media." + str::numstring(mediaNr));
+
+       DBG << "isDesiredMedia(): checking " << dir.asString() << std::endl;
+
+       try
+       {
+           if( ref )
+               ref->dirInfo(lst, dir, false);
+       }
+       catch( ... )
+       {}
+
+       DBG << "isDesiredMedia(): media "
+               << (lst.empty() ? "does not contain" : "contains")
+               << " the " << dir.asString() << " directory."
+               << std::endl;
+
+       return !lst.empty();
+    }
+
+  }
+  
+}
+
diff --git a/zypp/media/SuseMediaVerifier.h b/zypp/media/SuseMediaVerifier.h
new file mode 100644 (file)
index 0000000..02c3755
--- /dev/null
@@ -0,0 +1,41 @@
+/*---------------------------------------------------------------------\
+|                          ____ _   __ __ ___                          |
+|                         |__  / \ / / . \ . \                         |
+|                           / / \ V /|  _/  _/                         |
+|                          / /__ | | | | | |                           |
+|                         /_____||_| |_| |_|                           |
+|                                                                      |
+\---------------------------------------------------------------------*/
+/** \file       zypp/parser/media/SuseMediaVerifier.h
+ *
+*/
+#ifndef ZYPP_MEDIA_SUSEMEDIAVERIFIER_H
+#define ZYPP_MEDIA_SUSEMEDIAVERIFIER_H
+
+#include <zypp/media/MediaManager.h>
+#include <zypp/base/String.h>
+#include <zypp/base/Logger.h>
+#include <zypp/Pathname.h>
+
+namespace zypp {
+
+  namespace media {
+  
+    class SuseMediaVerifier: public MediaVerifierBase
+    {
+      public:
+       SuseMediaVerifier();
+       virtual ~SuseMediaVerifier();
+       
+       /**
+        *
+        * \throws Exception
+        */
+       virtual bool isDesiredMedia(const MediaAccessRef &ref, MediaNr mediaNr);
+    };
+    
+  }
+  
+}
+
+#endif // ZYPP_MEDIA_SUSEMEDIAVERIFIER_h