DmraidCo.h

Go to the documentation of this file.
00001 #ifndef DMRAID_CO_H
00002 #define DMRAID_CO_H
00003 
00004 #include <list>
00005 
00006 #include "y2storage/DmPartCo.h"
00007 #include "y2storage/Dmraid.h"
00008 
00009 namespace storage
00010 {
00011 
00012 class Storage;
00013 class SystemCmd;
00014 class ProcPart;
00015 class Region;
00016 
00017 class DmraidCo : public DmPartCo
00018     {
00019     friend class Storage;
00020 
00021     public:
00022         DmraidCo( Storage * const s, const string& Name, ProcPart& ppart );
00023         DmraidCo( Storage * const s, const string& Name, unsigned num, 
00024                   unsigned long long Size, ProcPart& ppart );
00025         DmraidCo( const DmraidCo& rhs );
00026         virtual ~DmraidCo();
00027 
00028         static storage::CType const staticType() { return storage::DMRAID; }
00029         friend std::ostream& operator<< (std::ostream&, const DmraidCo& );
00030         void getInfo( storage::DmraidCoInfo& info ) const;
00031 
00032         bool equalContent( const DmraidCo& rhs ) const;
00033         string logDiff( const DmraidCo& d ) const;
00034         DmraidCo& operator= ( const DmraidCo& rhs );
00035 
00036     protected:
00037 
00038         // iterators over partitions
00039         // protected typedefs for iterators over partitions
00040         typedef CastIterator<VIter, Dmraid *> DmraidInter;
00041         typedef CastIterator<CVIter, const Dmraid *> DmraidCInter;
00042         template< class Pred >
00043             struct DmraidPI { typedef ContainerIter<Pred, DmraidInter> type; };
00044         template< class Pred >
00045             struct DmraidCPI { typedef ContainerIter<Pred, DmraidCInter> type; };
00046         typedef CheckFnc<const Dmraid> CheckFncDmraid;
00047         typedef CheckerIterator< CheckFncDmraid, DmraidPI<CheckFncDmraid>::type,
00048                                  DmraidInter, Dmraid > DmraidPIterator;
00049         typedef CheckerIterator< CheckFncDmraid, DmraidCPI<CheckFncDmraid>::type,
00050                                  DmraidCInter, const Dmraid > DmraidCPIterator;
00051         typedef DerefIterator<DmraidPIterator,Dmraid> DmraidIter;
00052         typedef DerefIterator<DmraidCPIterator,const Dmraid> ConstDmraidIter;
00053         typedef IterPair<DmraidIter> DmraidPair;
00054         typedef IterPair<ConstDmraidIter> ConstDmraidPair;
00055 
00056         DmraidPair dmraidPair( bool (* CheckDmraid)( const Dmraid& )=NULL)
00057             {
00058             return( DmraidPair( dmraidBegin( CheckDmraid ), dmraidEnd( CheckDmraid ) ));
00059             }
00060         DmraidIter dmraidBegin( bool (* CheckDmraid)( const Dmraid& )=NULL)
00061             {
00062             IterPair<DmraidInter> p( (DmraidInter(begin())), (DmraidInter(end())) );
00063             return( DmraidIter( DmraidPIterator( p, CheckDmraid )) );
00064             }
00065         DmraidIter dmraidEnd( bool (* CheckDmraid)( const Dmraid& )=NULL)
00066             {
00067             IterPair<DmraidInter> p( (DmraidInter(begin())), (DmraidInter(end())) );
00068             return( DmraidIter( DmraidPIterator( p, CheckDmraid, true )) );
00069             }
00070 
00071         ConstDmraidPair dmraidPair( bool (* CheckDmraid)( const Dmraid& )=NULL) const
00072             {
00073             return( ConstDmraidPair( dmraidBegin( CheckDmraid ), dmraidEnd( CheckDmraid ) ));
00074             }
00075         ConstDmraidIter dmraidBegin( bool (* CheckDmraid)( const Dmraid& )=NULL) const
00076             {
00077             IterPair<DmraidCInter> p( (DmraidCInter(begin())), (DmraidCInter(end())) );
00078             return( ConstDmraidIter( DmraidCPIterator( p, CheckDmraid )) );
00079             }
00080         ConstDmraidIter dmraidEnd( bool (* CheckDmraid)( const Dmraid& )=NULL) const
00081             {
00082             IterPair<DmraidCInter> p( (DmraidCInter(begin())), (DmraidCInter(end())) );
00083             return( ConstDmraidIter( DmraidCPIterator( p, CheckDmraid, true )) );
00084             }
00085 
00086         DmraidCo( Storage * const s, const string& File );
00087         virtual void print( std::ostream& s ) const { s << *this; }
00088         virtual Container* getCopy() const { return( new DmraidCo( *this ) ); }
00089         static void activate( bool val );
00090         void getRaidData( const string& name );
00091         void addRaid( const string& name );
00092         void addPv( Pv*& p );
00093         void newP( DmPart*& dm, unsigned num, Partition* p );
00094         string removeText( bool doing ) const;
00095         string setDiskLabelText( bool doing ) const;
00096 
00097         static string undevName( const string& name );
00098 
00099         static void getRaids( std::list<string>& l );
00100         static bool raidNotDeleted( const Dmraid&d ) { return( !d.deleted() ); }
00101 
00102         int doRemove();
00103 
00104         void logData( const string& Dir );
00105 
00106         string raidtype;
00107         string controller;
00108 
00109         static bool active;
00110     };
00111 
00112 }
00113 
00114 #endif

Generated on Tue Nov 28 17:50:00 2006 for yast2-storage by  doxygen 1.5.0