summaryrefslogtreecommitdiff
path: root/src/blob.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/blob.h')
-rw-r--r--src/blob.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/blob.h b/src/blob.h
new file mode 100644
index 0000000..0a2a77d
--- /dev/null
+++ b/src/blob.h
@@ -0,0 +1,27 @@
+#ifndef GITFS_BLOB_H
+#define GITFS_BLOB_H
+
+#include <file.h>
+#include "git.h"
+
+namespace GitFS {
+ using namespace NetFS;
+ class Blob : public File {
+ public:
+ Blob(const GitFS::Git::RepositoryPtr & r, const Git::TreeEntryPtr &);
+
+ void close(const ::Ice::Current& current) override;
+ Attr fgetattr(ReqEnv env, const ::Ice::Current& current) override;
+ Buffer read(long long int offset, long long int size, const ::Ice::Current& current) override;
+ void ftruncate(ReqEnv env, long long int size, const ::Ice::Current& current) override;
+ void write(long long int offset, long long int size, Buffer data, const ::Ice::Current& current) override;
+
+ private:
+ Git::BlobPtr blob;
+ const decltype(git_blob_rawsize({})) blobSize;
+ const char * const blobContent;
+ };
+}
+
+#endif
+