Skip to content

CPP-Dresden/2016-03-Mount-Dojo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Aufgabe

Schreibe eine Klasse die das Mounten analog zu Linux Dateisystemen implementiert.

Beispiel Mountpunkte

  • <mountPath> => <absolutePath>
  • "/" => "C:\\Users\\admin\\documents"
  • "/work" => "W:\\Dokumente"
  • "/nas" => "N:\\documents"
  • "/work/kunde1" => "W:\\kunde1"
  • "/work/kunde2" => "W:\\kunde2"
  • "/work/kunde1/shared" => "W:\\shared"
  • "/work/kunde2/shared" => "W:\\shared"

Interface

class Mounts
{
public:
   /// absoluteBasePath wird im root mountPath "/" gemounted
   Mounts(string absoluteBasePath);

   /// liefert den absoluten Pfad für jeden beliebigen mountPath
   string absolutePath(string mountPath) const;

   /// liefert alle gemounten Pfade zu einem absoluten Pfad
   vector<string> allMountPathes(string absolutePath) const;

   /// sucht alle Mountpunkte als pair<mountPath, absolutePath> unterhalb einem mountPath
   vector<pair<string, string>> getMountPointsBelow(string mountPath) const;

   /// fügt einen neuen Mauntpunkt hinzu
   void mount(string mountPath, string absolutePath);

   /// löscht einen Mountpunkt an dem absoluten Pfad
   void unmountAbsolute(string absolutePath);

   /// löscht alle Mountpunkte im mountPath
   void unmountBelow(string mountPath);
};

Beispiel Ergebnisse

$> absolutePath("/work/kunde1/Vertrag.doc");
=> "W:\\kunde1\\Vertrag.doc"
$> allMountPathes("W:\\shared\\Styleguide.md");
=> ["/work/kunde1/shared/Styleguide.md", "/work/kunde2/shared/Styleguide.md"]
$> getMountPointsBelow("/work/kunde1");
=> [pair("/work/kunde1", "W:\\kunde1"), pair("/work/kunde1/shared", "W:\\shared")]

About

Resultat des Coding Dojos vom März 2016

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published