sic/src/Sicobject.H

72 lines
1.2 KiB
C++

#pragma once
#include <string>
#include <ctime>
#include <sstream>
#include <iostream>
#include <cassert>
#include "Sicmaster.H"
class Sicobject
{
public:
Sicobject() = delete; //was war noch mal ein explicit constructor?
Sicobject(Sicmaster & master) :
_sicmaster(master),
_isvalid(false)
{
};
Sicobject(Sicmaster &master, unsigned int idnum, std::string fname,size_t objsize,time_t upl_date) :
_size(objsize),
_idnum(idnum),
_sicmaster(master),
_isvalid(true),
_upl_date(upl_date),
_fname(fname)
{
}
~Sicobject();
std::string get_loadurl(){
std::string retval = "files/"; //TODO add master.get_baseurl()
//TODO: add idnum
return retval;
}
std::string get_fname()
{
return _fname;
}
size_t get_size() { return _size;}
std::string bytesize_string()
{
std::ostringstream strm( std::ios_base::ate);
int i = 0;
size_t size = _size;
const char* units[] = {"B", "kB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"};
while (size > 1024) {
size /= 1024;
i++;
}
assert(i < 9);
strm << size << units[i];
return strm.str();
}
private:
size_t _size;
unsigned int _idnum;
Sicmaster & _sicmaster;
bool _isvalid;
time_t _upl_date;
std::string _fname;
};