unlimited-storage

YouTube filesystem tool for uploading arbitrary data to the service
git clone git://git.laack.co/unlimited-storage.git
Log | Files | Refs | README

chunk.h (1187B)


      1 #include <iostream>
      2 #include <memory>
      3 #include <vector>
      4 
      5 // HEADER (this data is encoded in the image itself):
      6 // chunk number  4 bytes
      7 // characters    4 bytes
      8 // fnamelen      4 bytes
      9 // filename      fnamelen
     10 
     11 struct Header {
     12     uint chunkNumber;
     13     uint characters;
     14     uint fnameLength;
     15     std::string filename;
     16 };
     17 
     18 class Chunk{
     19 
     20 private:
     21     std::vector<char> chunk;
     22     std::string extractEncodedSection(const std::string& fileString, uint& itr, int count);
     23     std::string binaryToAscii(const std::string& binaryStr);
     24     Header header;
     25 
     26 public:
     27     Chunk(std::string filename, uint start, uint x, uint y);
     28     Chunk(std::vector<char> chunkData);
     29     // read in the written chunk from pbm format.
     30     Chunk(std::string filename);
     31     std::vector<char> getChunk();
     32     std::string getFilename() const;
     33     int getChunkNumber() const;
     34     // assumes header is populated in private member.
     35 
     36     bool operator<(const Chunk& other) const;
     37 
     38     void writeChunk();
     39     void writeChunk(std::string filename);
     40     void writeImage(std::string filename, uint chunkNumber, std::string originalFilename, uint x, uint y);
     41     void print();
     42     std::string toString();
     43     uint written;
     44 };
     45