summaryrefslogtreecommitdiff
path: root/src/dir.h
blob: 626d80f963f21a600a2ffabd09d53514e04ed213 (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
30
31
32
33
34
#ifndef GITFS_DIRECTORY_H
#define GITFS_DIRECTORY_H

#include "git.h"
#include <directory.h>
#include <git2.h>
#include <string>
#include <types.h>
namespace Ice {
	struct Current;
}

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