Imported Upstream version 16.3.2
[platform/upstream/libzypp.git] / zypp / repo / ServiceRepos.h
1 /*---------------------------------------------------------------------\
2 |                          ____ _   __ __ ___                          |
3 |                         |__  / \ / / . \ . \                         |
4 |                           / / \ V /|  _/  _/                         |
5 |                          / /__ | | | | | |                           |
6 |                         /_____||_| |_| |_|                           |
7 |                                                                      |
8 \---------------------------------------------------------------------*/
9
10 #ifndef ZYPP_REPO_SERVICE_REPOS
11 #define ZYPP_REPO_SERVICE_REPOS
12
13 #include "zypp/base/NonCopyable.h"
14 #include "zypp/ProgressData.h"
15 #include "zypp/ServiceInfo.h"
16 #include "zypp/RepoInfo.h"
17
18 namespace zypp
19 {
20   namespace repo
21   {
22     /**
23      * Retrieval of repository list for a service.
24      */
25     class ServiceRepos : private base::NonCopyable
26     {
27     public:
28      /**
29       * Return false from the callback to get a \ref AbortRequestException
30       * to be thrown and the processing to be cancelled.
31       */
32       typedef function< bool( const RepoInfo & )> ProcessRepo;
33
34       ServiceRepos( const ServiceInfo & service,
35                     const ProcessRepo & callback,
36                     const ProgressData::ReceiverFnc &progress = ProgressData::ReceiverFnc() );
37       ~ServiceRepos();
38
39     public:
40       class Impl;       //!< Expose type only
41     private:
42       RW_pointer<Impl> _impl;
43     };
44   } // ns repo
45 } // ns zypp
46
47 #endif