Deprecate MediaAccess::downloads (accidentally deleted)
[platform/upstream/libzypp.git] / zypp / ZYppFactory.h
1 /*---------------------------------------------------------------------\
2 |                          ____ _   __ __ ___                          |
3 |                         |__  / \ / / . \ . \                         |
4 |                           / / \ V /|  _/  _/                         |
5 |                          / /__ | | | | | |                           |
6 |                         /_____||_| |_| |_|                           |
7 |                                                                      |
8 \---------------------------------------------------------------------*/
9 /** \file       zypp/ZYppFactory.h
10  *
11 */
12 #ifndef ZYPP_ZYPPFACTORY_H
13 #define ZYPP_ZYPPFACTORY_H
14
15 #include <iosfwd>
16
17 #include "zypp/base/Exception.h"
18 #include "zypp/ZYpp.h"
19
20 ///////////////////////////////////////////////////////////////////
21 namespace zypp
22 { /////////////////////////////////////////////////////////////////
23
24   class ZYppFactoryException : public Exception
25   {
26   public:
27     ZYppFactoryException( const std::string & msg_r, pid_t locker_pid );
28     pid_t locker_pid() const { return _locker_pid; }
29   private:
30     pid_t _locker_pid;
31   };
32
33   ///////////////////////////////////////////////////////////////////
34   //
35   //    CLASS NAME : ZYppFactory
36   //
37   /** ZYpp factory class (Singleton)
38   */
39   class ZYppFactory
40   {
41     friend std::ostream & operator<<( std::ostream & str, const ZYppFactory & obj );
42
43   public:
44     /** Singleton ctor */
45     static ZYppFactory instance();
46     /** Dtor */
47     ~ZYppFactory();
48
49   public:
50     /** \return Pointer to the ZYpp instance.
51      * \throw EXCEPTION In case we can't acquire a lock.
52     */
53     ZYpp::Ptr getZYpp() const;
54
55     /** Whether the ZYpp instance is already created.*/
56     bool haveZYpp() const;
57
58   private:
59     /** Default ctor. */
60     ZYppFactory();
61   };
62   ///////////////////////////////////////////////////////////////////
63
64   /** \relates ZYppFactory Stream output */
65   std::ostream & operator<<( std::ostream & str, const ZYppFactory & obj );
66
67   /** \relates ZYppFactory Convenience to get the Pointer
68    * to the ZYpp instance.
69    * \see ZYppFactory::getZYpp
70   */
71   inline ZYpp::Ptr getZYpp()
72   { return ZYppFactory::instance().getZYpp(); }
73
74   /////////////////////////////////////////////////////////////////
75 } // namespace zypp
76 ///////////////////////////////////////////////////////////////////
77 #endif // ZYPP_ZYPPFACTORY_H