#ifndef GITFS_BLOB_H #define GITFS_BLOB_H #include "git.h" #include #include #include #include namespace Ice { struct Current; } namespace GitFS { using namespace NetFS; class Repo; class Blob : public File { public: Blob(const Repo * const r, std::string &&); 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; long long int copyrange( FilePrxPtr, long long int, long long int, long long int, int, const Ice::Current &) override; private: Git::BlobPtr getBlob() const; const Repo * const repo; Git::TreeEntryPtr entry; Git::BlobPtr blob; using BlobSize = decltype(git_blob_rawsize({})); const BlobSize blobSize; const char * const blobContent; }; } #endif