Author: jkupec
Date: Tue May 29 11:42:55 2007
New Revision: 5637
URL: http://svn.opensuse.org/viewcvs/zypp?rev=5637&view=rev
Log:
Hiding YUM parser implementation.
Modified:
trunk/libzypp/zypp/parser/yum/FilelistsFileReader.cc
trunk/libzypp/zypp/parser/yum/FilelistsFileReader.h
trunk/libzypp/zypp/parser/yum/OtherFileReader.cc
trunk/libzypp/zypp/parser/yum/OtherFileReader.h
trunk/libzypp/zypp/parser/yum/PatternFileReader.h
trunk/libzypp/zypp/parser/yum/RepomdFileReader.cc
trunk/libzypp/zypp/parser/yum/RepomdFileReader.h
Modified: trunk/libzypp/zypp/parser/yum/FilelistsFileReader.cc
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/parser/yum/FilelistsFileReader.cc?rev=5637&r1=5636&r2=5637&view=diff
==============================================================================
--- trunk/libzypp/zypp/parser/yum/FilelistsFileReader.cc (original)
+++ trunk/libzypp/zypp/parser/yum/FilelistsFileReader.cc Tue May 29 11:42:55 2007
@@ -6,8 +6,11 @@
| /_____||_| |_| |_| |
| |
\---------------------------------------------------------------------*/
-
-#include <fstream>
+/** \file zypp/parser/yum/FilelistsFileReader.cc
+ * Implementation of filelists.xml.gz file reader.
+ */
+#include "zypp/base/Logger.h"
+#include "zypp/parser/xml/Reader.h"
#include "zypp/parser/yum/FilelistsFileReader.h"
@@ -25,21 +28,59 @@
{
- // --------------------------------------------------------------------------
+ ///////////////////////////////////////////////////////////////////////
+ //
+ // CLASS NAME : FilelistsFileReader::Impl
+ //
+ class FilelistsFileReader::Impl : private base::NonCopyable
+ {
+ public:
+ Impl(
+ const Pathname & filelists_file,
+ const ProcessPackage & callback,
+ const ProgressData::ReceiverFnc & progress = ProgressData::ReceiverFnc());
- /*
- * xpath and multiplicity of processed nodes are included in the code
- * for convenience:
- *
- * // xpath: <xpath> (?|*|+)
- *
- * if multiplicity is ommited, then the node has multiplicity 'one'.
- */
+ public:
- // --------------------------------------------------------------------------
+ /**
+ * Callback provided to the XML parser.
+ */
+ bool consumeNode(xml::Reader & reader_r);
+
+ /**
+ * Creates a new \ref data::Resolvable_Ptr, swaps its contents with
+ * \ref _resolvable and returns it. Used to hand-out the data object to its consumer
+ * (a \ref ProcessPackage function) after it has been read.
+ */
+ data::Resolvable_Ptr handoutResolvable();
+
+ private:
+
+ /**
+ * Pointer to the \ref zypp::data::Resolvable object for storing the NVRA
+ * data.
+ */
+ zypp::data::Resolvable_Ptr _resolvable;
+
+ /**
+ * Changelog of \ref _resolvable.
+ */
+ data::Filenames _filenames;
+
+ /**
+ * Callback for processing package metadata. Passed in through constructor.
+ */
+ ProcessPackage _callback;
+
+ /**
+ * Progress reporting object.
+ */
+ ProgressData _ticks;
+ };
+ ///////////////////////////////////////////////////////////////////////
- FilelistsFileReader::FilelistsFileReader(
- const Pathname & filelist_file,
+ FilelistsFileReader::Impl::Impl(
+ const Pathname & filelists_file,
const ProcessPackage & callback,
const ProgressData::ReceiverFnc & progress)
:
@@ -48,14 +89,26 @@
_ticks.sendTo(progress);
_ticks.name("filelist.xml.gz");
- Reader reader(filelist_file);
- MIL << "Reading " << filelist_file << endl;
- reader.foreachNode(bind(&FilelistsFileReader::consumeNode, this, _1));
+ Reader reader(filelists_file);
+ MIL << "Reading " << filelists_file << endl;
+ reader.foreachNode(bind(&FilelistsFileReader::Impl::consumeNode, this, _1));
}
// --------------------------------------------------------------------------
- bool FilelistsFileReader::consumeNode(Reader & reader_r)
+ /*
+ * xpath and multiplicity of processed nodes are included in the code
+ * for convenience:
+ *
+ * // xpath: <xpath> (?|*|+)
+ *
+ * if multiplicity is ommited, then the node has multiplicity 'one'.
+ */
+
+ // --------------------------------------------------------------------------
+
+
+ bool FilelistsFileReader::Impl::consumeNode(Reader & reader_r)
{
if (reader_r->nodeType() == XML_READER_TYPE_ELEMENT)
{
@@ -125,7 +178,7 @@
// --------------------------------------------------------------------------
- data::Resolvable_Ptr FilelistsFileReader::handoutResolvable()
+ data::Resolvable_Ptr FilelistsFileReader::Impl::handoutResolvable()
{
data::Resolvable_Ptr ret;
ret.swap(_resolvable);
@@ -133,9 +186,26 @@
}
+ ///////////////////////////////////////////////////////////////////
+ //
+ // CLASS NAME : FilelistsFileReader
+ //
+ ///////////////////////////////////////////////////////////////////
+
+ FilelistsFileReader::FilelistsFileReader(
+ const Pathname & filelists_file,
+ const ProcessPackage & callback,
+ const ProgressData::ReceiverFnc & progress)
+ :
+ _pimpl(new Impl(filelists_file, callback, progress))
+ {}
+
+ FilelistsFileReader::~FilelistsFileReader()
+ {}
+
+
} // ns yum
} // ns parser
} // ns zypp
// vim: set ts=2 sts=2 sw=2 et ai:
-
Modified: trunk/libzypp/zypp/parser/yum/FilelistsFileReader.h
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/parser/yum/FilelistsFileReader.h?rev=5637&r1=5636&r2=5637&view=diff
==============================================================================
--- trunk/libzypp/zypp/parser/yum/FilelistsFileReader.h (original)
+++ trunk/libzypp/zypp/parser/yum/FilelistsFileReader.h Tue May 29 11:42:55 2007
@@ -6,14 +6,17 @@
| /_____||_| |_| |_| |
| |
\---------------------------------------------------------------------*/
+/** \file zypp/parser/yum/FilelistsFileReader.h
+ * Interface of filelists.xml.gz file reader.
+ */
+#ifndef ZYPP_PARSER_YUM_FILELISTFILEREADER_H_
+#define ZYPP_PARSER_YUM_FILELISTFILEREADER_H_
-#ifndef FILELISTFILEREADER_H_
-#define FILELISTFILEREADER_H_
-
+#include "zypp/base/PtrTypes.h"
+#include "zypp/base/NonCopyable.h"
#include "zypp/base/Function.h"
-#include "zypp/base/Logger.h"
-#include "zypp/parser/xml/Reader.h"
#include "zypp/data/ResolvableData.h"
+
#include "zypp/ProgressData.h"
namespace zypp
@@ -39,7 +42,7 @@
* bind(&SomeClass::callbackfunc, &SomeClassInstance, _1, _2));
* \endcode
*/
- class FilelistsFileReader
+ class FilelistsFileReader : private base::NonCopyable
{
public:
/**
@@ -48,7 +51,8 @@
typedef function ProcessPackage;
/**
- * Constructor
+ * CTOR. Creates also \ref xml::Reader and starts reading.
+ *
* \param filelists_file the filelists.xml.gz file you want to read
* \param callback function to process \ref _resolvable data.
* \param progress progress reporting object
@@ -60,42 +64,14 @@
const ProcessPackage & callback,
const ProgressData::ReceiverFnc & progress = ProgressData::ReceiverFnc());
- private:
-
- /**
- * Callback provided to the XML parser.
- */
- bool consumeNode(xml::Reader & reader_r);
-
/**
- * Creates a new \ref data::Resolvable_Ptr, swaps its contents with
- * \ref _resolvable and returns it. Used to hand-out the data object to its consumer
- * (a \ref ProcessPackage function) after it has been read.
+ * DTOR.
*/
- data::Resolvable_Ptr handoutResolvable();
+ ~FilelistsFileReader();
private:
-
- /**
- * Pointer to the \ref zypp::data::Resolvable object for storing the NVRA
- * data.
- */
- zypp::data::Resolvable_Ptr _resolvable;
-
- /**
- * Changelog of \ref _resolvable.
- */
- data::Filenames _filenames;
-
- /**
- * Callback for processing package metadata passed in through constructor.
- */
- ProcessPackage _callback;
-
- /**
- * Progress reporting object.
- */
- ProgressData _ticks;
+ class Impl;
+ RW_pointer _pimpl;
};
@@ -103,6 +79,6 @@
} // ns parser
} // ns yum
-#endif /*FILELISTFILEREADER_H_*/
+#endif /*ZYPP_PARSER_YUM_FILELISTFILEREADER_H_*/
// vim: set ts=2 sts=2 sw=2 et ai:
Modified: trunk/libzypp/zypp/parser/yum/OtherFileReader.cc
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/parser/yum/OtherFileReader.cc?rev=5637&r1=5636&r2=5637&view=diff
==============================================================================
--- trunk/libzypp/zypp/parser/yum/OtherFileReader.cc (original)
+++ trunk/libzypp/zypp/parser/yum/OtherFileReader.cc Tue May 29 11:42:55 2007
@@ -6,8 +6,13 @@
| /_____||_| |_| |_| |
| |
\---------------------------------------------------------------------*/
-
-#include <fstream>
+/** \file zypp/parser/yum/OtherFileReader.cc
+ * Implementation of other.xml.gz file reader.
+ */
+#include "zypp/base/Logger.h"
+#include "zypp/parser/xml/Reader.h"
+#include "zypp/data/ResolvableData.h"
+#include "zypp/Changelog.h"
#include "zypp/parser/yum/OtherFileReader.h"
@@ -25,20 +30,58 @@
{
- // --------------------------------------------------------------------------
-
- /*
- * xpath and multiplicity of processed nodes are included in the code
- * for convenience:
- *
- * // xpath: <xpath> (?|*|+)
- *
- * if multiplicity is ommited, then the node has multiplicity 'one'.
- */
-
- // --------------------------------------------------------------------------
+ ///////////////////////////////////////////////////////////////////////
+ //
+ // CLASS NAME : OtherFileReader::Impl
+ //
+ class OtherFileReader::Impl : private base::NonCopyable
+ {
+ public:
+ Impl(
+ const Pathname & other_file,
+ const ProcessPackage & callback,
+ const ProgressData::ReceiverFnc & progress);
+
+ public:
+
+ /**
+ * Callback provided to the XML parser.
+ */
+ bool consumeNode(xml::Reader & reader_r);
+
+ /**
+ * Creates a new \ref data::Resolvable_Ptr, swaps its contents with
+ * \ref _resolvable and returns it. Used to hand-out the data object to its consumer
+ * (a \ref ProcessPackage function) after it has been read.
+ */
+ data::Resolvable_Ptr handoutResolvable();
+
+ private:
+
+ /**
+ * Pointer to the \ref zypp::data::Resolvable object for storing the NVRA
+ * data.
+ */
+ zypp::data::Resolvable_Ptr _resolvable;
+
+ /**
+ * Changelog of \ref _resolvable.
+ */
+ Changelog _changelog;
+
+ /**
+ * Callback for processing package metadata passed in through constructor.
+ */
+ ProcessPackage _callback;
+
+ /**
+ * Progress reporting object.
+ */
+ ProgressData _ticks;
+ };
+ ///////////////////////////////////////////////////////////////////////
- OtherFileReader::OtherFileReader(
+ OtherFileReader::Impl::Impl(
const Pathname & other_file,
const ProcessPackage & callback,
const ProgressData::ReceiverFnc & progress)
@@ -50,12 +93,23 @@
Reader reader(other_file);
MIL << "Reading " << other_file << endl;
- reader.foreachNode(bind(&OtherFileReader::consumeNode, this, _1));
+ reader.foreachNode(bind(&OtherFileReader::Impl::consumeNode, this, _1));
}
// --------------------------------------------------------------------------
- bool OtherFileReader::consumeNode(Reader & reader_r)
+ /*
+ * xpath and multiplicity of processed nodes are included in the code
+ * for convenience:
+ *
+ * // xpath: <xpath> (?|*|+)
+ *
+ * if multiplicity is ommited, then the node has multiplicity 'one'.
+ */
+
+ // --------------------------------------------------------------------------
+
+ bool OtherFileReader::Impl::consumeNode(Reader & reader_r)
{
if (reader_r->nodeType() == XML_READER_TYPE_ELEMENT)
{
@@ -128,7 +182,7 @@
// --------------------------------------------------------------------------
- data::Resolvable_Ptr OtherFileReader::handoutResolvable()
+ data::Resolvable_Ptr OtherFileReader::Impl::handoutResolvable()
{
data::Resolvable_Ptr ret;
ret.swap(_resolvable);
@@ -136,6 +190,24 @@
}
+ ///////////////////////////////////////////////////////////////////
+ //
+ // CLASS NAME : OtherFileReader
+ //
+ ///////////////////////////////////////////////////////////////////
+
+ OtherFileReader::OtherFileReader(
+ const Pathname & other_file,
+ const ProcessPackage & callback,
+ const ProgressData::ReceiverFnc & progress)
+ :
+ _pimpl(new Impl(other_file, callback, progress))
+ {}
+
+ OtherFileReader::~OtherFileReader()
+ {}
+
+
} // ns yum
} // ns parser
} // ns zypp
Modified: trunk/libzypp/zypp/parser/yum/OtherFileReader.h
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/parser/yum/OtherFileReader.h?rev=5637&r1=5636&r2=5637&view=diff
==============================================================================
--- trunk/libzypp/zypp/parser/yum/OtherFileReader.h (original)
+++ trunk/libzypp/zypp/parser/yum/OtherFileReader.h Tue May 29 11:42:55 2007
@@ -6,16 +6,18 @@
| /_____||_| |_| |_| |
| |
\---------------------------------------------------------------------*/
-
+/** \file zypp/parser/yum/OtherFileReader.h
+ * Interface of other.xml.gz file reader.
+ */
#ifndef OTHERFILEREADER_H_
#define OTHERFILEREADER_H_
-#include "zypp/base/Function.h"
-#include "zypp/base/Logger.h"
-#include "zypp/parser/xml/Reader.h"
+#include "zypp/base/PtrTypes.h"
+#include "zypp/base/NonCopyable.h"
#include "zypp/data/ResolvableData.h"
+#include "zypp/base/Function.h"
+
#include "zypp/ProgressData.h"
-#include "zypp/Changelog.h"
namespace zypp
{
@@ -27,7 +29,7 @@
/**
* Reads through a other.xml file and collects additional package data
- * (currently only changelogs).
+ * (changelogs).
*
* After a package is read, a \ref data::Resolvable
* and \ref Changelog is prepared and \ref _callback
@@ -37,10 +39,10 @@
*
* \code
* OtherFileReader reader(other_file,
- * bind(&SomeClass::callbackfunc, &object, _1));
+ * bind(&SomeClass::callbackfunc, &SomeClassInstance, _1, _2));
* \endcode
*/
- class OtherFileReader
+ class OtherFileReader : private base::NonCopyable
{
public:
/**
@@ -49,7 +51,8 @@
typedef function ProcessPackage;
/**
- * Constructor
+ * CTOR. Creates also \ref xml::Reader and starts reading.
+ *
* \param other_file the other.xml.gz file you want to read
* \param callback function to process \ref _resolvable data.
* \param progress progress reporting object
@@ -60,43 +63,15 @@
const Pathname & other_file,
const ProcessPackage & callback,
const ProgressData::ReceiverFnc & progress = ProgressData::ReceiverFnc());
-
- private:
-
+
/**
- * Callback provided to the XML parser.
+ * DTOR
*/
- bool consumeNode(xml::Reader & reader_r);
-
- /**
- * Creates a new \ref data::Resolvable_Ptr, swaps its contents with
- * \ref _resolvable and returns it. Used to hand-out the data object to its consumer
- * (a \ref ProcessPackage function) after it has been read.
- */
- data::Resolvable_Ptr handoutResolvable();
+ ~OtherFileReader();
private:
-
- /**
- * Pointer to the \ref zypp::data::Resolvable object for storing the NVRA
- * data.
- */
- zypp::data::Resolvable_Ptr _resolvable;
-
- /**
- * Changelog of \ref _resolvable.
- */
- Changelog _changelog;
-
- /**
- * Callback for processing package metadata passed in through constructor.
- */
- ProcessPackage _callback;
-
- /**
- * Progress reporting object.
- */
- ProgressData _ticks;
+ class Impl;
+ RW_pointer _pimpl;
};
Modified: trunk/libzypp/zypp/parser/yum/PatternFileReader.h
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/parser/yum/PatternFileReader.h?rev=5637&r1=5636&r2=5637&view=diff
==============================================================================
--- trunk/libzypp/zypp/parser/yum/PatternFileReader.h (original)
+++ trunk/libzypp/zypp/parser/yum/PatternFileReader.h Tue May 29 11:42:55 2007
@@ -7,10 +7,10 @@
| |
\---------------------------------------------------------------------*/
/** \file zypp/parser/yum/PatternFileReader.h
- *
+ * Interface of patterns.xml file reader.
*/
-#ifndef PATTERNFILEREADER_H_
-#define PATTERNFILEREADER_H_
+#ifndef ZYPP_PARSER_YUM_PATTERNFILEREADER_H_
+#define ZYPP_PARSER_YUM_PATTERNFILEREADER_H_
#include "zypp/parser/yum/FileReaderBase.h"
@@ -70,4 +70,4 @@
} // ns parser
} // ns zypp
-#endif /*PATTERNFILEREADER_H_*/
+#endif /*ZYPP_PARSER_YUM_PATTERNFILEREADER_H_*/
Modified: trunk/libzypp/zypp/parser/yum/RepomdFileReader.cc
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/parser/yum/RepomdFileReader.cc?rev=5637&r1=5636&r2=5637&view=diff
==============================================================================
--- trunk/libzypp/zypp/parser/yum/RepomdFileReader.cc (original)
+++ trunk/libzypp/zypp/parser/yum/RepomdFileReader.cc Tue May 29 11:42:55 2007
@@ -6,73 +6,169 @@
| /_____||_| |_| |_| |
| |
\---------------------------------------------------------------------*/
-
-#include <fstream>
+/** \file zypp/parser/yum/RepomdFileReader.cc
+ * Implementation of repomd.xml file reader.
+ */
#include "zypp/base/String.h"
#include "zypp/base/Logger.h"
-#include "zypp/parser/yum/RepomdFileReader.h"
+#include "zypp/Date.h"
+#include "zypp/CheckSum.h"
+#include "zypp/parser/xml/Reader.h"
+
+#include "zypp/parser/yum/RepomdFileReader.h"
using namespace std;
using namespace zypp::xml;
using zypp::source::yum::YUMResourceType;
-namespace zypp { namespace parser { namespace yum {
-
-RepomdFileReader::RepomdFileReader( const Pathname &repomd_file, ProcessResource callback )
- : _tag(tag_NONE), _type(YUMResourceType::NONE_e), _callback(callback)
-{
- Reader reader( repomd_file );
- MIL << "Reading " << repomd_file << endl;
- reader.foreachNode( bind( &RepomdFileReader::consumeNode, this, _1 ) );
-}
-
-bool RepomdFileReader::consumeNode( Reader & reader_r )
+namespace zypp
{
- //MIL << reader_r->name() << endl;
- std::string data_type;
- if ( reader_r->nodeType() == XML_READER_TYPE_ELEMENT )
+ namespace parser
{
- if ( reader_r->name() == "repomd" )
+ namespace yum
{
- _tag = tag_Repomd;
- return true;
- }
- if ( reader_r->name() == "data" )
- {
- _tag = tag_Data;
- _type = YUMResourceType(reader_r->getAttribute("type").asString());
- return true;
- }
- if ( reader_r->name() == "location" )
+
+
+ ///////////////////////////////////////////////////////////////////////
+ //
+ // CLASS NAME : RepomdFileReader::Impl
+ //
+ class RepomdFileReader::Impl : private base::NonCopyable
+ {
+ public:
+
+ /**
+ * Enumeration of repomd.xml tags.
+ * \see _tag
+ */
+ enum Tag
{
- _tag = tag_Location;
- _location.filename( reader_r->getAttribute("href").asString() );
- return true;
- }
- if ( reader_r->name() == "checksum" )
+ tag_NONE,
+ tag_Repomd,
+ tag_Data,
+ tag_Location,
+ tag_CheckSum,
+ tag_Timestamp,
+ tag_OpenCheckSum
+ };
+
+ public:
+ /**
+ * CTOR
+ *
+ * \see RepomdFileReader::RepomdFileReader(Pathname,ProcessResource)
+ */
+ Impl(const Pathname &repomd_file, const ProcessResource & callback);
+
+ /**
+ * Callback provided to the XML parser.
+ */
+ bool consumeNode( Reader & reader_r );
+
+
+ private:
+ /** Location of metadata file. */
+ OnMediaLocation _location;
+
+ /** Used to remember currently processed tag */
+ Tag _tag;
+
+ /** Type of metadata file. */
+ source::yum::YUMResourceType _type;
+
+ /** Function for processing collected data. Passed in through constructor. */
+ ProcessResource _callback;
+
+ /** Checksum of metadata file */
+ CheckSum _checksum;
+
+ /** Type of checksum of metadata file */
+ std::string _checksum_type;
+
+ /** Metadata file time-stamp. */
+ Date _timestamp;
+ };
+ ///////////////////////////////////////////////////////////////////////
+
+ RepomdFileReader::Impl::Impl(
+ const Pathname &repomd_file, const ProcessResource & callback)
+ :
+ _tag(tag_NONE), _type(YUMResourceType::NONE_e), _callback(callback)
+ {
+ Reader reader( repomd_file );
+ MIL << "Reading " << repomd_file << endl;
+ reader.foreachNode( bind( &RepomdFileReader::Impl::consumeNode, this, _1 ) );
+ }
+
+ // --------------------------------------------------------------------------
+
+ bool RepomdFileReader::Impl::consumeNode( Reader & reader_r )
+ {
+ //MIL << reader_r->name() << endl;
+ std::string data_type;
+ if ( reader_r->nodeType() == XML_READER_TYPE_ELEMENT )
{
- _tag = tag_CheckSum;
- string checksum_type = reader_r->getAttribute("type").asString() ;
- string checksum_vaue = reader_r.nodeText().asString();
- _location.checksum( CheckSum( checksum_type, checksum_vaue ) );
- return true;
+ if ( reader_r->name() == "repomd" )
+ {
+ _tag = tag_Repomd;
+ return true;
+ }
+ if ( reader_r->name() == "data" )
+ {
+ _tag = tag_Data;
+ _type = YUMResourceType(reader_r->getAttribute("type").asString());
+ return true;
+ }
+ if ( reader_r->name() == "location" )
+ {
+ _tag = tag_Location;
+ _location.filename( reader_r->getAttribute("href").asString() );
+ return true;
+ }
+ if ( reader_r->name() == "checksum" )
+ {
+ _tag = tag_CheckSum;
+ string checksum_type = reader_r->getAttribute("type").asString() ;
+ string checksum_vaue = reader_r.nodeText().asString();
+ _location.checksum( CheckSum( checksum_type, checksum_vaue ) );
+ return true;
+ }
+ if ( reader_r->name() == "timestamp" )
+ {
+ // ignore it
+ return true;
+ }
}
- if ( reader_r->name() == "timestamp" )
+ else if ( reader_r->nodeType() == XML_READER_TYPE_END_ELEMENT )
{
- // ignore it
+ //MIL << "end element" << endl;
+ if ( reader_r->name() == "data" )
+ _callback( _location, _type );
return true;
}
- }
- else if ( reader_r->nodeType() == XML_READER_TYPE_END_ELEMENT )
- {
- //MIL << "end element" << endl;
- if ( reader_r->name() == "data" )
- _callback( _location, _type );
return true;
}
- return true;
-}
-} } } //ns zypp::source::yum
+ ///////////////////////////////////////////////////////////////////
+ //
+ // CLASS NAME : RepomdFileReader
+ //
+ ///////////////////////////////////////////////////////////////////
+
+ RepomdFileReader::RepomdFileReader(
+ const Pathname & repomd_file, const ProcessResource & callback)
+ :
+ _pimpl(new Impl(repomd_file, callback))
+ {}
+
+ RepomdFileReader::~RepomdFileReader()
+ {}
+
+
+ } // ns yum
+ } // ns parser
+} // ns zypp
+
+// vim: set ts=2 sts=2 sw=2 et ai:
Modified: trunk/libzypp/zypp/parser/yum/RepomdFileReader.h
URL: http://svn.opensuse.org/viewcvs/zypp/trunk/libzypp/zypp/parser/yum/RepomdFileReader.h?rev=5637&r1=5636&r2=5637&view=diff
==============================================================================
--- trunk/libzypp/zypp/parser/yum/RepomdFileReader.h (original)
+++ trunk/libzypp/zypp/parser/yum/RepomdFileReader.h Tue May 29 11:42:55 2007
@@ -6,19 +6,18 @@
| /_____||_| |_| |_| |
| |
\---------------------------------------------------------------------*/
-
+/** \file zypp/parser/yum/RepomdFileReader.h
+ * Interface of repomd.xml file reader.
+ */
#ifndef zypp_source_yum_RepomdFileReader_H
#define zypp_source_yum_RepomdFileReader_H
-#include "zypp/Date.h"
-#include "zypp/CheckSum.h"
-#include "zypp/OnMediaLocation.h"
+#include "zypp/base/PtrTypes.h"
+#include "zypp/base/NonCopyable.h"
#include "zypp/base/Function.h"
-#include "zypp/parser/xml/Reader.h"
-#include "zypp/source/yum/YUMResourceType.h"
-using namespace std;
-using namespace zypp::xml;
+#include "zypp/OnMediaLocation.h"
+#include "zypp/source/yum/YUMResourceType.h"
namespace zypp
{
@@ -26,64 +25,59 @@
{
namespace yum
{
+
+
+ /**
+ * Reads through a repomd.xml file and collects type, location, checksum and
+ * other data about metadata files to be processed.
+ *
+ * After each package is read, a \ref OnMediaLocation
+ * and \ref source::yum::YUMResourceType is prepared and \ref _callback
+ * is called with these two objects passed in.
+ *
+ * The \ref _callback is provided on construction.
+ *
+ *
+ * \code
+ * RepomdFileReader reader(repomd_file,
+ * bind( &SomeClass::callbackfunc, &SomeClassInstance, _1, _2 ) );
+ * \endcode
+ */
+ class RepomdFileReader
+ {
+ public:
+ /**
+ * Callback definition.
+ * First parameter is a \ref OnMediaLocation object with the resource
+ * second parameter is the resource type.
+ */
+ typedef function< bool(
+ const OnMediaLocation &,
+ const source::yum::YUMResourceType &)>
+ ProcessResource;
+
+ /**
+ * CTOR. Creates also \ref xml::Reader and starts reading.
+ *
+ * \param repomd_file is the repomd.xml file you want to read
+ * \param callback is a function.
+ *
+ * \see RepomdFileReader::ProcessResource
+ */
+ RepomdFileReader(
+ const Pathname & repomd_file, const ProcessResource & callback);
- /**
- * Iterates through a repomd.xml file giving on each iteration
- * a \ref OnMediaLocation object with the resource and its
- * type ( primary, patches, filelists, etc ).
- * The iteration is done via a callback provided on
- * construction.
- *
- * \code
- * RepomdFileReader reader(repomd_file,
- * bind( &SomeClass::callbackfunc, &object, _1, _2 ) );
- * \endcode
- */
- class RepomdFileReader
- {
- public:
- /**
- * Callback definition
- * first parameter is a \ref OnMediaLocation object with the resource
- * second parameter is the resource type
- */
- typedef function< bool(
- const OnMediaLocation &,
- const source::yum::YUMResourceType & )>
- ProcessResource;
-
- enum Tag
- {
- tag_NONE,
- tag_Repomd,
- tag_Data,
- tag_Location,
- tag_CheckSum,
- tag_Timestamp,
- tag_OpenCheckSum
- };
-
- /**
- * Constructor
- * \param repomd_file is the repomd.xml file you want to read
- * \param callback is a function. \see RepomdFileReader::ProcessResource
- */
- RepomdFileReader( const Pathname &repomd_file, ProcessResource callback );
-
- /**
- * Callback provided to the XML parser. Don't use it.
- */
- bool consumeNode( Reader & reader_r );
-
- private:
- OnMediaLocation _location;
- Tag _tag;
- source::yum::YUMResourceType _type;
- ProcessResource _callback;
- CheckSum _checksum;
- std::string _checksum_type;
- Date _timestamp;
- };
+ /**
+ * DTOR
+ */
+ ~RepomdFileReader();
+
+ private:
+ class Impl;
+ RW_pointer _pimpl;
+ };
+
+
}
}
}
--
To unsubscribe, e-mail: zypp-commit+unsubscribe@opensuse.org
For additional commands, e-mail: zypp-commit+help@opensuse.org