summaryrefslogtreecommitdiff
path: root/src/dir.h
blob: 51b4bc704ed8ab7c1f8cc3782136832215937d65 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#ifndef GITFS_DIRECTORY_H
#define GITFS_DIRECTORY_H

#include <directory.h>
#include "git.h"

namespace GitFS {
	using namespace NetFS;
	class Repo;
	class Directory : public DirectoryV2 {
		public:
			Directory(Repo * const r, std::string &&);

			void close(const ::Ice::Current& current) override;
			NameList readdir(const ::Ice::Current& current) override;
			DirectoryContents listdir(const ::Ice::Current& current) override;

		private:
			Git::TreePtr getSubtree() const;
			Repo * const repo;
			const std::string path;

			mutable Git::TreePtr subTreeCache;
			mutable git_oid subTreeCacheRootId;
	};
}

#endif