X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=store.h;h=1fd366b6ed24aed9ddfb6cb7ed898b07a4038f26;hb=117fafdd16cf070cda130d6d8ac321947692055a;hp=1ef5db46a5f6eb2cb39ec99dcf347b4bdbbff492;hpb=5c10647d667fc4408b73402db9247181a54a57ad;p=cumulus.git diff --git a/store.h b/store.h index 1ef5db4..1fd366b 100644 --- a/store.h +++ b/store.h @@ -49,10 +49,11 @@ public: Tarfile(const std::string &path, const std::string &segment); ~Tarfile(); + int spawn_filter(int fd_out); void write_object(int id, const char *data, size_t len); // Return an estimate of the size of the file. - size_t size_estimate() { return size; } + size_t size_estimate(); void internal_write_object(const std::string &path, const char *data, size_t len); @@ -61,6 +62,10 @@ private: size_t size; std::string segment_name; TAR *t; + + /* Filter support. */ + int real_fd, filter_fd; + pid_t filter_pid; }; class TarSegmentStore { @@ -79,6 +84,9 @@ public: // Ensure all segments have been fully written. void sync(); + // Dump statistics to stdout about how much data has been written + void dump_stats(); + private: struct segment_info { Tarfile *file; @@ -139,4 +147,11 @@ private: ObjectReference ref; }; +/* Program through which segment data is piped before being written to file. */ +extern const char *filter_program; + +/* Extension which should be appended to segments written out (.tar is already + * included; this adds to it) */ +extern const char *filter_extension; + #endif // _LBS_STORE_H