Imported Upstream version 17.14.0
[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 canceled.
31       */
32       typedef function< bool( const RepoInfo & )> ProcessRepo;
33
34       /**
35        * bsc#1080693: Explicitly pass the RemoManagers rootDir until it can be queried from the ServiceInfo.
36        * Required to execute plugin services chrooted.
37        */
38       ServiceRepos( const Pathname & root_r,
39                     const ServiceInfo & service,
40                     const ProcessRepo & callback,
41                     const ProgressData::ReceiverFnc &progress = ProgressData::ReceiverFnc() );
42       ~ServiceRepos();
43
44     public:
45       struct Impl;      //!< Expose type only
46     private:
47       RW_pointer<Impl> _impl;
48     };
49   } // ns repo
50 } // ns zypp
51
52 #endif