libzypp 17.35.14
MediaManager.h
Go to the documentation of this file.
1/*---------------------------------------------------------------------\
2| ____ _ __ __ ___ |
3| |__ / \ / / . \ . \ |
4| / / \ V /| _/ _/ |
5| / /__ | | | | | | |
6| /_____||_| |_| |_| |
7| |
8\---------------------------------------------------------------------*/
12#ifndef ZYPP_MEDIA_MEDIAMANAGER_H
13#define ZYPP_MEDIA_MEDIAMANAGER_H
14
15#include <zypp-core/Globals.h>
17#include <zypp/base/PtrTypes.h>
18#include <zypp/Pathname.h>
19#include <zypp/PathInfo.h>
20#include <zypp/Url.h>
21#include <zypp-core/OnMediaLocation>
23#include <zypp-media/MediaException>
24
25#include <list>
26
27
28namespace zypp::media
29{
30 class MediaHandler;
31
32 using MediaNr = unsigned int;
33
34
36 // forward declaration
37 struct MountEntry;
39
41 //
42 // CLASS NAME : MediaVerifierBase
43 //
47 class MediaVerifierBase //: private zypp::NonCopyable
48 {
49 public:
52
54 {}
55
60 virtual std::string info() const;
61
62 /*
63 ** Check if the specified attached media contains
64 ** the desired media (e.g. SLES10 CD1).
65 */
66 virtual bool isDesiredMedia(const MediaHandler &ref) const = 0;
67 };
68
69
71 //
72 // CLASS NAME : NoVerifier
73 //
78 {
79 public:
82
83 ~NoVerifier() override
84 {}
85
89 std::string info() const override;
90
91 /*
92 ** Don't check if the specified attached media contains
93 ** the desired media number. Always return true.
94 */
95 bool isDesiredMedia(const MediaHandler &ref) const override
96 { return true; }
97 };
98
99
101 //
102 // CLASS NAME : MediaVerifierRef
103 //
108
109
111 //
112 // CLASS NAME : MediaManager
113 //
454 {
455 public:
467 MediaManager();
468
474
496 open(const Url &url, const Pathname & preferred_attach_point = "");
497
502 void
503 close(MediaAccessId accessId);
504
511 bool
512 isOpen(MediaAccessId accessId) const;
513
523 std::string
524 protocol(MediaAccessId accessId) const;
525
531 bool
532 downloads(MediaAccessId accessId) const;
533
541 Url
542 url(MediaAccessId accessId) const;
543
544 public:
553 void
554 addVerifier(MediaAccessId accessId,
556
564 void
565 delVerifier(MediaAccessId accessId);
566
567 public:
580 bool
581 setAttachPrefix(const Pathname &attach_prefix);
582
592 void
593 attach(MediaAccessId accessId);
594
606 void
607 release(MediaAccessId accessId, const std::string & ejectDev = "");
608
612 void
613 releaseAll();
614
629 void
630 disconnect(MediaAccessId accessId);
631
639 bool
640 isAttached(MediaAccessId accessId) const;
641
650 bool
651 isSharedMedia(MediaAccessId accessId) const;
652
662 bool
663 isDesiredMedia(MediaAccessId accessId) const;
664
675 bool
676 isDesiredMedia(MediaAccessId accessId,
677 const MediaVerifierRef &verifier) const;
678
690 bool
691 isChangeable(MediaAccessId accessId);
692
706 localRoot(MediaAccessId accessId) const;
707
721 localPath(MediaAccessId accessId, const Pathname & pathname) const;
722
723 public:
724
729 ZYPP_DEPRECATED void
730 provideFile(MediaAccessId accessId,
731 const Pathname &filename,
732 const ByteCount &expectedFileSize) const;
733
738 ZYPP_DEPRECATED void
739 provideFile(MediaAccessId accessId,
740 const Pathname &filename ) const;
741
742
760 void
761 provideFile(MediaAccessId accessId,
762 const OnMediaLocation &file ) const;
763
767 void
768 provideDir(MediaAccessId accessId,
769 const Pathname &dirname) const;
770
774 void
775 provideDirTree(MediaAccessId accessId,
776 const Pathname &dirname) const;
777
781 void
782 releaseFile(MediaAccessId accessId,
783 const Pathname &filename) const;
784
788 void
789 releaseDir(MediaAccessId accessId,
790 const Pathname &dirname) const;
791
795 void
796 releasePath(MediaAccessId accessId,
797 const Pathname &pathname) const;
798
802 void
803 dirInfo(MediaAccessId accessId,
804 std::list<std::string> &retlist,
805 const Pathname &dirname,
806 bool dots = true) const;
807
811 void
812 dirInfo(MediaAccessId accessId,
813 filesystem::DirContent &retlist,
814 const Pathname &dirname,
815 bool dots = true) const;
816
820 bool doesFileExist(MediaAccessId accessId,
821 const Pathname & filename ) const;
822
832 void
833 getDetectedDevices(MediaAccessId accessId,
834 std::vector<std::string> & devices,
835 unsigned int & index) const;
836
837 ZYPP_DEPRECATED void
838 setDeltafile(MediaAccessId accessId,
839 const Pathname &filename ) const;
840
852 void precacheFiles( MediaAccessId accessId,
853 const std::vector<OnMediaLocation> &files);
854
855 public:
860 static time_t
861 getMountTableMTime();
862
867 static std::vector<MountEntry>
868 getMountEntries();
869
879 bool
880 isUseableAttachPoint(const Pathname &path,
881 bool mtab=true) const;
882
883 private:
884 friend class MediaHandler;
885
896 getAttachedMedia(MediaAccessId &accessId) const;
897
908 findAttachedMedia(const MediaSourceRef &media) const;
909
918 void
919 forceReleaseShared(const MediaSourceRef &media);
920
921 private:
926 };
927
929} // namespace zypp::media
931
932#endif // ZYPP_MEDIA_MEDIAMANAGER_H
933
934/*
935** vim: set ts=2 sts=2 sw=2 ai et:
936*/
MediaVerifierRef verifier
Store and operate with byte count.
Definition ByteCount.h:32
Describes a resource file located on a medium.
Url manipulation class.
Definition Url.h:92
Abstract base class for 'physical' MediaHandler like MediaCD, etc.
Manages access to the 'physical' media, e.g CDROM drives, Disk volumes, directory trees,...
static zypp::RW_pointer< MediaManager_Impl > m_impl
Static reference to the implementation (singleton).
Interface to implement a media verifier.
virtual std::string info() const
Returns a string with some info about the verifier.
virtual bool isDesiredMedia(const MediaHandler &ref) const =0
Dummy default media verifier, which is always happy.
std::string info() const override
Returns the "zypp::media::NoVerifier" string.
bool isDesiredMedia(const MediaHandler &ref) const override
boost::noncopyable NonCopyable
Ensure derived classes cannot be copied.
Definition NonCopyable.h:26
std::list< DirEntry > DirContent
Returned by readdir.
Definition PathInfo.h:519
unsigned int MediaNr
unsigned int MediaAccessId
Media manager access Id type.
Definition MediaSource.h:30
const Arch Arch_armv7hnl Arch_armv7nhl ZYPP_API
Definition Arch.h:247
Wrapper for const correct access via Smart pointer types.
Definition PtrTypes.h:293
A simple structure containing references to a media source and its attach point.
A "struct mntent" like mount entry structure, but using std::strings.
Definition mount.h:36
Provides API related macros.
#define ZYPP_DEPRECATED
The ZYPP_DEPRECATED macro can be used to trigger compile-time warnings with gcc >= 3....
Definition Globals.h:116