[DEV] better interface for file sha512

This commit is contained in:
Edouard DUPIN 2017-04-28 00:00:39 +00:00
parent 6e0d0e2ffc
commit 958060692c
4 changed files with 35 additions and 9 deletions

View File

@ -60,7 +60,7 @@ bool pushVideoFile(zeus::service::ProxyVideo& _srv, std::string _path, std::map<
APPL_ERROR("Sot send file : " << _path << " Not manage extention..."); APPL_ERROR("Sot send file : " << _path << " Not manage extention...");
return false; return false;
} }
// TODO: Do it better ==> add the calback to know the push progression ...
uint32_t mediaId = _srv.add(zeus::File::create(_path)).waitFor(echrono::seconds(20000)).get(); uint32_t mediaId = _srv.add(zeus::File::create(_path)).waitFor(echrono::seconds(20000)).get();
if (mediaId == 0) { if (mediaId == 0) {
APPL_ERROR("Get media ID = 0 With no error"); APPL_ERROR("Get media ID = 0 With no error");

View File

@ -19,11 +19,15 @@ ememory::SharedPtr<zeus::File> zeus::File::create(std::string _fileNameReal) {
ememory::SharedPtr<zeus::File> zeus::File::create(std::string _fileNameReal, std::string _fileNameShow, std::string _mineType) { ememory::SharedPtr<zeus::File> zeus::File::create(std::string _fileNameReal, std::string _fileNameShow, std::string _mineType) {
return ememory::makeShared<zeus::FileImpl>(_fileNameReal, _fileNameShow, _mineType); return ememory::makeShared<zeus::FileImpl>(_fileNameReal, _fileNameShow, _mineType);
} }
ememory::SharedPtr<zeus::File> zeus::File::create(std::string _fileNameReal, std::string _fileNameShow, std::string _mineType, std::string _sha512) {
return ememory::makeShared<zeus::FileImpl>(_fileNameReal, _fileNameShow, _mineType, _sha512);
}
zeus::FileImpl::FileImpl(std::string _fileNameReal) : zeus::FileImpl::FileImpl(std::string _fileNameReal, std::string _sha512) :
m_filename(_fileNameReal), m_filename(_fileNameReal),
m_node(_fileNameReal), m_node(_fileNameReal),
m_gettedData(0) { m_gettedData(0),
m_sha512(_sha512) {
m_size = m_node.fileSize(); m_size = m_node.fileSize();
m_node.fileOpenRead(); m_node.fileOpenRead();
std::string extention; std::string extention;
@ -32,17 +36,28 @@ zeus::FileImpl::FileImpl(std::string _fileNameReal) :
extention = std::string(_fileNameReal.begin()+_fileNameReal.rfind('.')+1, _fileNameReal.end()); extention = std::string(_fileNameReal.begin()+_fileNameReal.rfind('.')+1, _fileNameReal.end());
} }
m_mineType = zeus::getMineType(extention); m_mineType = zeus::getMineType(extention);
m_sha512 = algue::stringConvert(algue::sha512::encodeFromFile(_fileNameReal)); if ( _sha512.size() > 0
&& _sha512.size() != 128) {
ZEUS_ERROR("Set a wrong sha512 file type");
_sha512.clear();
}
} }
zeus::FileImpl::FileImpl(std::string _fileNameReal, std::string _fileNameShow, std::string _mineType) : // sha 512 example: 6134b4a4b5b116cf1b1b757c5aa48bd8b3482b86c6d3fee389a0a3232f74e7331e5f8af6ad516d2ca92eda0a475f44e1291618562ce6f9e54634ba052650dcd7
// 000000000100000000020000000003000000000400000000050000000006000000000700000000080000000009000000000A000000000B000000000C00000000
zeus::FileImpl::FileImpl(std::string _fileNameReal, std::string _fileNameShow, std::string _mineType, std::string _sha512) :
m_filename(_fileNameShow), m_filename(_fileNameShow),
m_node(_fileNameReal), m_node(_fileNameReal),
m_gettedData(0), m_gettedData(0),
m_mineType(_mineType) { m_mineType(_mineType),
m_sha512(_sha512) {
m_size = m_node.fileSize(); m_size = m_node.fileSize();
m_node.fileOpenRead(); m_node.fileOpenRead();
m_sha512 = algue::stringConvert(algue::sha512::encodeFromFile(_fileNameReal)); if ( _sha512.size() > 0
&& _sha512.size() != 128) {
ZEUS_ERROR("Set a wrong sha512 file type");
_sha512.clear();
}
} }
zeus::FileImpl::~FileImpl() { zeus::FileImpl::~FileImpl() {
@ -58,6 +73,11 @@ std::string zeus::FileImpl::getName() {
} }
std::string zeus::FileImpl::getSha512() { std::string zeus::FileImpl::getSha512() {
if (m_sha512 == "") {
ZEUS_INFO("calculation of sha 512 (start)");
m_sha512 = algue::stringConvert(algue::sha512::encodeFromFile(m_node.getFileSystemName()));
ZEUS_INFO("calculation of sha 512 (stop)");
}
return m_sha512; return m_sha512;
} }

View File

@ -18,8 +18,8 @@ namespace zeus {
std::string m_mineType; //!< Mine Type of the file std::string m_mineType; //!< Mine Type of the file
std::string m_sha512; //!< Global file sha-512 std::string m_sha512; //!< Global file sha-512
public: public:
FileImpl(std::string _fileNameReal, std::string _fileNameShow, std::string _mineType); FileImpl(std::string _fileNameReal, std::string _fileNameShow, std::string _mineType, std::string _sha512="");
FileImpl(std::string _fileNameReal); FileImpl(std::string _fileNameReal, std::string _sha512="");
~FileImpl(); ~FileImpl();
uint64_t getSize() override; uint64_t getSize() override;
std::string getName() override; std::string getName() override;

View File

@ -15,6 +15,12 @@
#param:fileNameShow:Name of the file like the remote user will se it. #param:fileNameShow:Name of the file like the remote user will se it.
#param:mineType:Mine-type of the file. #param:mineType:Mine-type of the file.
[factory] create(string, string, string) [factory] create(string, string, string)
#brief:Factory to create a local object.
#param:fileNameReal:Name of the local file to instanciate.
#param:fileNameShow:Name of the file like the remote user will se it.
#param:mineType:Mine-type of the file.
#param:sha512: Sha-512 string if the file
[factory] create(string, string, string, string)
// -------------------------- // --------------------------
// -- Members -- // -- Members --