# HG changeset patch # User Paul Boddie # Date 1618777915 -7200 # Node ID 3c6563ec63d4d17709f517307f275439e1b224cf # Parent 808968fd16e5ee0ab2495b1549571faf7520f203 Moved the size member from the generic accessor since not all accessors may retain the size of a file, instead obtaining it from the filesystem itself. diff -r 808968fd16e5 -r 3c6563ec63d4 libfsserver/include/fsserver/accessor.h --- a/libfsserver/include/fsserver/accessor.h Sun Apr 18 00:27:43 2021 +0200 +++ b/libfsserver/include/fsserver/accessor.h Sun Apr 18 22:31:55 2021 +0200 @@ -41,13 +41,13 @@ public: fileid_t fileid; - explicit Accessor(fileid_t fileid, offset_t size=0); + explicit Accessor(fileid_t fileid); virtual ~Accessor(); - virtual offset_t get_size(); + virtual offset_t get_size() = 0; - virtual void set_size(offset_t size); + virtual void set_size(offset_t size) = 0; virtual void close(); diff -r 808968fd16e5 -r 3c6563ec63d4 libfsserver/include/fsserver/block_file_accessor.h --- a/libfsserver/include/fsserver/block_file_accessor.h Sun Apr 18 00:27:43 2021 +0200 +++ b/libfsserver/include/fsserver/block_file_accessor.h Sun Apr 18 22:31:55 2021 +0200 @@ -31,6 +31,7 @@ class BlockFileAccessor : public Accessor { protected: + offset_t _size; char *_data; /* Data transfer helper methods. */ @@ -42,6 +43,8 @@ public: explicit BlockFileAccessor(const char *path, fileid_t fileid); + virtual offset_t get_size(); + virtual void set_size(offset_t size); }; diff -r 808968fd16e5 -r 3c6563ec63d4 libfsserver/include/fsserver/host_file_accessor.h --- a/libfsserver/include/fsserver/host_file_accessor.h Sun Apr 18 00:27:43 2021 +0200 +++ b/libfsserver/include/fsserver/host_file_accessor.h Sun Apr 18 22:31:55 2021 +0200 @@ -33,6 +33,7 @@ class HostFileAccessor : public Accessor { protected: + offset_t _size; const char *_path; FILE *_fp; @@ -45,6 +46,10 @@ public: explicit HostFileAccessor(const char *path, fileid_t fileid); + virtual offset_t get_size(); + + virtual void set_size(offset_t size); + virtual void close(); virtual void open(); diff -r 808968fd16e5 -r 3c6563ec63d4 libfsserver/include/fsserver/pipe_accessor.h --- a/libfsserver/include/fsserver/pipe_accessor.h Sun Apr 18 00:27:43 2021 +0200 +++ b/libfsserver/include/fsserver/pipe_accessor.h Sun Apr 18 22:31:55 2021 +0200 @@ -30,6 +30,7 @@ class PipeAccessor : public Accessor { protected: + offset_t _size; /* Data transfer helper methods. */ @@ -40,6 +41,10 @@ public: explicit PipeAccessor(); + virtual offset_t get_size(); + + virtual void set_size(offset_t size); + virtual void close(); virtual void open(); diff -r 808968fd16e5 -r 3c6563ec63d4 libfsserver/include/fsserver/test_file_accessor.h --- a/libfsserver/include/fsserver/test_file_accessor.h Sun Apr 18 00:27:43 2021 +0200 +++ b/libfsserver/include/fsserver/test_file_accessor.h Sun Apr 18 22:31:55 2021 +0200 @@ -30,6 +30,7 @@ class TestFileAccessor : public Accessor { protected: + offset_t _size; /* Data transfer helper methods. */ @@ -39,6 +40,10 @@ public: explicit TestFileAccessor(fileid_t fileid, offset_t size=0); + + virtual offset_t get_size(); + + virtual void set_size(offset_t size); }; // vim: tabstop=4 expandtab shiftwidth=4 diff -r 808968fd16e5 -r 3c6563ec63d4 libfsserver/lib/files/block_file_accessor.cc --- a/libfsserver/lib/files/block_file_accessor.cc Sun Apr 18 00:27:43 2021 +0200 +++ b/libfsserver/lib/files/block_file_accessor.cc Sun Apr 18 22:31:55 2021 +0200 @@ -66,6 +66,13 @@ fclose(fp); } +/* Return the size of the file. */ + +offset_t BlockFileAccessor::get_size() +{ + return _size; +} + /* Update the size of the file. */ void BlockFileAccessor::set_size(offset_t size) @@ -79,7 +86,7 @@ if (size > _size) memset(_data + _size, 0, size - _size); - Accessor::set_size(size); + _size = size; } } diff -r 808968fd16e5 -r 3c6563ec63d4 libfsserver/lib/files/host_file_accessor.cc --- a/libfsserver/lib/files/host_file_accessor.cc Sun Apr 18 00:27:43 2021 +0200 +++ b/libfsserver/lib/files/host_file_accessor.cc Sun Apr 18 22:31:55 2021 +0200 @@ -39,6 +39,20 @@ _size = 0; } +/* Return the size of the file. */ + +offset_t HostFileAccessor::get_size() +{ + return _size; +} + +/* Update the size of the file. */ + +void HostFileAccessor::set_size(offset_t size) +{ + _size = size; +} + /* Perform any closing operation on the file. */ void HostFileAccessor::close() diff -r 808968fd16e5 -r 3c6563ec63d4 libfsserver/lib/files/test_file_accessor.cc --- a/libfsserver/lib/files/test_file_accessor.cc Sun Apr 18 00:27:43 2021 +0200 +++ b/libfsserver/lib/files/test_file_accessor.cc Sun Apr 18 22:31:55 2021 +0200 @@ -25,8 +25,22 @@ #include "test_file_accessor.h" TestFileAccessor::TestFileAccessor(fileid_t fileid, offset_t size) -: Accessor(fileid, size) +: Accessor(fileid), _size(size) +{ +} + +/* Return the size of the file. */ + +offset_t TestFileAccessor::get_size() { + return _size; +} + +/* Update the size of the file. */ + +void TestFileAccessor::set_size(offset_t size) +{ + _size = size; } /* Data transfer helper methods. */ diff -r 808968fd16e5 -r 3c6563ec63d4 libfsserver/lib/generic/accessor.cc --- a/libfsserver/lib/generic/accessor.cc Sun Apr 18 00:27:43 2021 +0200 +++ b/libfsserver/lib/generic/accessor.cc Sun Apr 18 22:31:55 2021 +0200 @@ -25,8 +25,8 @@ -Accessor::Accessor(fileid_t fileid, offset_t size) -: _size(size), fileid(fileid) +Accessor::Accessor(fileid_t fileid) +: fileid(fileid) { } @@ -34,20 +34,6 @@ { } -/* Return the size of the file. */ - -offset_t Accessor::get_size() -{ - return _size; -} - -/* Update the size of the file. */ - -void Accessor::set_size(offset_t size) -{ - _size = size; -} - /* Perform any closing operation on the file. */ void Accessor::close() @@ -68,7 +54,7 @@ flexpage. This could potentially be a shared read-only flexpage that would be replaced by an independent writable flexpage if ever written. */ - if (flexpage->base_offset < _size) + if (flexpage->base_offset < get_size()) fill_populated(flexpage); else memset((void *) flexpage->base_addr, 0, flexpage->size); @@ -79,7 +65,7 @@ /* Flushing completely beyond the end of file should discard the flexpage. */ - if (flexpage->base_offset < _size) + if (flexpage->base_offset < get_size()) flush_populated(flexpage); } diff -r 808968fd16e5 -r 3c6563ec63d4 libfsserver/lib/pipes/pipe_accessor.cc --- a/libfsserver/lib/pipes/pipe_accessor.cc Sun Apr 18 00:27:43 2021 +0200 +++ b/libfsserver/lib/pipes/pipe_accessor.cc Sun Apr 18 22:31:55 2021 +0200 @@ -28,6 +28,20 @@ { } +/* Return the size of the file. */ + +offset_t PipeAccessor::get_size() +{ + return _size; +} + +/* Update the size of the file. */ + +void PipeAccessor::set_size(offset_t size) +{ + _size = size; +} + /* Perform any closing operation on the file. */ void PipeAccessor::close()