};
- ///////////////////////////////////////////////////////////////////
namespace
{
- static weak_ptr<ZYpp> _theZYppInstance;
- static scoped_ptr<ZYppGlobalLock> _theGlobalLock; // on/off in sync with _theZYppInstance
-
- ZYppGlobalLock & globalLock()
+ static ZYppGlobalLock & globalLock()
{
- if ( !_theGlobalLock )
- _theGlobalLock.reset( new ZYppGlobalLock );
- return *_theGlobalLock;
+ static ZYppGlobalLock lock;
+ return lock;
}
- } //namespace
- ///////////////////////////////////////////////////////////////////
-
- ///////////////////////////////////////////////////////////////////
- //
- // CLASS NAME : ZYpp
- //
- ///////////////////////////////////////////////////////////////////
-
- ZYpp::ZYpp( const Impl_Ptr & impl_r )
- : _pimpl( impl_r )
- {
- }
-
- ZYpp::~ZYpp()
- {
- _theGlobalLock.reset();
+ bool _haveZYpp = false;
}
///////////////////////////////////////////////////////////////////
//
///////////////////////////////////////////////////////////////////
+ ///////////////////////////////////////////////////////////////////
+ //
+ // METHOD NAME : ZYppFactory::instance
+ // METHOD TYPE : ZYppFactory
+ //
ZYppFactory ZYppFactory::instance()
- { return ZYppFactory(); }
+ {
+ return ZYppFactory();
+ }
+ ///////////////////////////////////////////////////////////////////
+ //
+ // METHOD NAME : ZYppFactory::ZYppFactory
+ // METHOD TYPE : Ctor
+ //
ZYppFactory::ZYppFactory()
- {}
+ {
+ }
+
+ ///////////////////////////////////////////////////////////////////
+ //
+ // METHOD NAME : ZYppFactory::~ZYppFactory
+ // METHOD TYPE : Dtor
+ //
ZYppFactory::~ZYppFactory()
{}
//
ZYpp::Ptr ZYppFactory::getZYpp() const
{
- ZYpp::Ptr _instance = _theZYppInstance.lock();
+ static ZYpp::Ptr _instance;
+
if ( ! _instance )
{
if ( geteuid() != 0 )
}
}
}
+
}
if ( failed )
{
}
}
// Here we go...
- static ZYpp::Impl_Ptr _theImplInstance; // for now created once
- if ( !_theImplInstance )
- _theImplInstance.reset( new ZYpp::Impl );
- _instance.reset( new ZYpp( _theImplInstance ) );
- _theZYppInstance = _instance;
+ _instance = new ZYpp( ZYpp::Impl_Ptr(new ZYpp::Impl) );
+ if ( _instance )
+ _haveZYpp = true;
}
return _instance;
///////////////////////////////////////////////////////////////////
//
bool ZYppFactory::haveZYpp() const
- { return !_theZYppInstance.expired(); }
+ { return _haveZYpp; }
/******************************************************************
**