summaryrefslogtreecommitdiff
path: root/src/dir.h
blob: 91d9ddd5bcfcb6263823e56dff5d6faeb8a65f48 (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
#ifndef GITFS_DIRECTORY_H
#define GITFS_DIRECTORY_H

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

namespace GitFS {
	using namespace NetFS;
	class Repo;
	class Directory : public NetFS::Directory {
	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