sic/src/Sicobject.H

75 lines
1.2 KiB
C++

#pragma once
#include <string>
#include <ctime>
#include <sstream>
#include <iostream>
#include <cassert>
#include "Routerin.H"
class Routerin;
class Sicobject
{
public:
Sicobject() = delete;
Sicobject(const Routerin * master) :
_routerin(master),
_isvalid(false)
{
};
Sicobject(const Routerin *master, unsigned int idnum, std::string fname,size_t objsize,time_t upl_date) :
_size(objsize),
_idnum(idnum),
_routerin(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;
const Routerin * _routerin;
bool _isvalid;
time_t _upl_date;
std::string _fname;
};