[DEV] correct the template specializatin compilation with g++
This commit is contained in:
parent
f76787a7d2
commit
bae883a836
@ -12,6 +12,7 @@
|
||||
#include <climits>
|
||||
#include <etk/os/FSNode.h>
|
||||
#include <zeus/mineType.h>
|
||||
#include <zeus/WebServer.h>
|
||||
|
||||
|
||||
void zeus::addType(std::vector<uint8_t>& _data, zeus::ParamType _type) {
|
||||
@ -45,260 +46,260 @@ void zeus::Buffer::addParameterEmptyVector() {
|
||||
addType(data, createType<std::vector<void>>());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<std::string>(uint16_t _paramId, const std::string& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::string>());
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], _value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<std::vector<std::string>>(uint16_t _paramId, const std::vector<std::string>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<std::string>>());
|
||||
// count all datas:
|
||||
uint32_t size = 0;
|
||||
for (auto &it : _value) {
|
||||
size+=it.size()+1;
|
||||
}
|
||||
uint16_t nb = _value.size();
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+size+2);
|
||||
memcpy(&data[currentOffset], &nb, sizeof(uint16_t));
|
||||
currentOffset += sizeof(uint16_t);
|
||||
for (auto &it : _value) {
|
||||
memcpy(&data[currentOffset], &it[0], it.size());
|
||||
currentOffset += it.size();
|
||||
data[currentOffset] = '\0';
|
||||
currentOffset++;
|
||||
}
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<std::vector<bool>>(uint16_t _paramId, const std::vector<bool>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<bool>>());
|
||||
// add size:
|
||||
uint16_t nb = _value.size();
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
for (const auto &it : _value) {
|
||||
if (it == true) {
|
||||
data[currentOffset] = 'T';
|
||||
} else {
|
||||
data[currentOffset] = 'F';
|
||||
}
|
||||
currentOffset++;
|
||||
}
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<std::vector<int8_t>>(uint16_t _paramId, const std::vector<int8_t>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<int8_t>>());
|
||||
// add size:
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], sizeof(int8_t)*_value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<std::vector<int16_t>>(uint16_t _paramId, const std::vector<int16_t>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<int16_t>>());
|
||||
// add size:
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], sizeof(int16_t)*_value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<std::vector<int32_t>>(uint16_t _paramId, const std::vector<int32_t>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<int32_t>>());
|
||||
// add size:
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], sizeof(int32_t)*_value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<std::vector<int64_t>>(uint16_t _paramId, const std::vector<int64_t>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<int64_t>>());
|
||||
// add size:
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], sizeof(int64_t)*_value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<std::vector<uint8_t>>(uint16_t _paramId, const std::vector<uint8_t>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<uint8_t>>());
|
||||
// add size:
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], sizeof(uint8_t)*_value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<std::vector<uint16_t>>(uint16_t _paramId, const std::vector<uint16_t>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<uint16_t>>());
|
||||
// add size:
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], sizeof(uint16_t)*_value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<std::vector<uint32_t>>(uint16_t _paramId, const std::vector<uint32_t>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<uint32_t>>());
|
||||
// add size:
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], sizeof(uint32_t)*_value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<std::vector<uint64_t>>(uint16_t _paramId, const std::vector<uint64_t>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<uint64_t>>());
|
||||
// add size:
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], sizeof(uint64_t)*_value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<std::vector<float>>(uint16_t _paramId, const std::vector<float>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<float>>());
|
||||
// add size:
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], sizeof(float)*_value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<std::vector<double>>(uint16_t _paramId, const std::vector<double>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<double>>());
|
||||
// add size:
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], sizeof(double)*_value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<int8_t>(uint16_t _paramId, const int8_t& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<int8_t>());
|
||||
data.push_back(uint8_t(_value));
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<uint8_t>(uint16_t _paramId, const uint8_t& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<uint8_t>());
|
||||
data.push_back(_value);
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<int16_t>(uint16_t _paramId, const int16_t& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<int16_t>());
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+2);
|
||||
memcpy(&data[currentOffset], &_value, 2);
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<uint16_t>(uint16_t _paramId, const uint16_t& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<uint16_t>());
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+2);
|
||||
memcpy(&data[currentOffset], &_value, 2);
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<int32_t>(uint16_t _paramId, const int32_t& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<int32_t>());
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+4);
|
||||
memcpy(&data[currentOffset], &_value, 4);
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<uint32_t>(uint16_t _paramId, const uint32_t& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<uint32_t>());
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+4);
|
||||
memcpy(&data[currentOffset], &_value, 4);
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<int64_t>(uint16_t _paramId, const int64_t& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<int64_t>());
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+8);
|
||||
memcpy(&data[currentOffset], &_value, 8);
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<uint64_t>(uint16_t _paramId, const uint64_t& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<uint64_t>());
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+8);
|
||||
memcpy(&data[currentOffset], &_value, 8);
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<float>(uint16_t _paramId, const float& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<float>());
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+4);
|
||||
memcpy(&data[currentOffset], &_value, 4);
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<double>(uint16_t _paramId, const double& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<double>());
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+8);
|
||||
memcpy(&data[currentOffset], &_value, 8);
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<bool>(uint16_t _paramId, const bool& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<bool>());
|
||||
if (_value == true) {
|
||||
data.push_back('T');
|
||||
} else {
|
||||
data.push_back('F');
|
||||
}
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
#define ZEUS_MINIMUM_SIZE_MULTIPLE (1024*50)
|
||||
|
||||
namespace zeus {
|
||||
template<>
|
||||
void Buffer::internalAddParameter<std::string>(uint16_t _paramId, const std::string& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::string>());
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], _value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void Buffer::internalAddParameter<std::vector<std::string>>(uint16_t _paramId, const std::vector<std::string>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<std::string>>());
|
||||
// count all datas:
|
||||
uint32_t size = 0;
|
||||
for (auto &it : _value) {
|
||||
size+=it.size()+1;
|
||||
}
|
||||
uint16_t nb = _value.size();
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+size+2);
|
||||
memcpy(&data[currentOffset], &nb, sizeof(uint16_t));
|
||||
currentOffset += sizeof(uint16_t);
|
||||
for (auto &it : _value) {
|
||||
memcpy(&data[currentOffset], &it[0], it.size());
|
||||
currentOffset += it.size();
|
||||
data[currentOffset] = '\0';
|
||||
currentOffset++;
|
||||
}
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
|
||||
template<>
|
||||
void Buffer::internalAddParameter<std::vector<bool>>(uint16_t _paramId, const std::vector<bool>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<bool>>());
|
||||
// add size:
|
||||
uint16_t nb = _value.size();
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
for (const auto &it : _value) {
|
||||
if (it == true) {
|
||||
data[currentOffset] = 'T';
|
||||
} else {
|
||||
data[currentOffset] = 'F';
|
||||
}
|
||||
currentOffset++;
|
||||
}
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
|
||||
template<>
|
||||
void Buffer::internalAddParameter<std::vector<int8_t>>(uint16_t _paramId, const std::vector<int8_t>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<int8_t>>());
|
||||
// add size:
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], sizeof(int8_t)*_value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void Buffer::internalAddParameter<std::vector<int16_t>>(uint16_t _paramId, const std::vector<int16_t>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<int16_t>>());
|
||||
// add size:
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], sizeof(int16_t)*_value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void Buffer::internalAddParameter<std::vector<int32_t>>(uint16_t _paramId, const std::vector<int32_t>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<int32_t>>());
|
||||
// add size:
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], sizeof(int32_t)*_value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void Buffer::internalAddParameter<std::vector<int64_t>>(uint16_t _paramId, const std::vector<int64_t>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<int64_t>>());
|
||||
// add size:
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], sizeof(int64_t)*_value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void Buffer::internalAddParameter<std::vector<uint8_t>>(uint16_t _paramId, const std::vector<uint8_t>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<uint8_t>>());
|
||||
// add size:
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], sizeof(uint8_t)*_value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void Buffer::internalAddParameter<std::vector<uint16_t>>(uint16_t _paramId, const std::vector<uint16_t>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<uint16_t>>());
|
||||
// add size:
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], sizeof(uint16_t)*_value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void Buffer::internalAddParameter<std::vector<uint32_t>>(uint16_t _paramId, const std::vector<uint32_t>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<uint32_t>>());
|
||||
// add size:
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], sizeof(uint32_t)*_value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void Buffer::internalAddParameter<std::vector<uint64_t>>(uint16_t _paramId, const std::vector<uint64_t>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<uint64_t>>());
|
||||
// add size:
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], sizeof(uint64_t)*_value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
|
||||
template<>
|
||||
void Buffer::internalAddParameter<std::vector<float>>(uint16_t _paramId, const std::vector<float>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<float>>());
|
||||
// add size:
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], sizeof(float)*_value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
|
||||
template<>
|
||||
void Buffer::internalAddParameter<std::vector<double>>(uint16_t _paramId, const std::vector<double>& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<std::vector<double>>());
|
||||
// add size:
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+_value.size());
|
||||
memcpy(&data[currentOffset], &_value[0], sizeof(double)*_value.size());
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
|
||||
template<>
|
||||
void Buffer::internalAddParameter<int8_t>(uint16_t _paramId, const int8_t& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<int8_t>());
|
||||
data.push_back(uint8_t(_value));
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void Buffer::internalAddParameter<uint8_t>(uint16_t _paramId, const uint8_t& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<uint8_t>());
|
||||
data.push_back(_value);
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void Buffer::internalAddParameter<int16_t>(uint16_t _paramId, const int16_t& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<int16_t>());
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+2);
|
||||
memcpy(&data[currentOffset], &_value, 2);
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void Buffer::internalAddParameter<uint16_t>(uint16_t _paramId, const uint16_t& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<uint16_t>());
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+2);
|
||||
memcpy(&data[currentOffset], &_value, 2);
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void Buffer::internalAddParameter<int32_t>(uint16_t _paramId, const int32_t& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<int32_t>());
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+4);
|
||||
memcpy(&data[currentOffset], &_value, 4);
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void Buffer::internalAddParameter<uint32_t>(uint16_t _paramId, const uint32_t& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<uint32_t>());
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+4);
|
||||
memcpy(&data[currentOffset], &_value, 4);
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void Buffer::internalAddParameter<int64_t>(uint16_t _paramId, const int64_t& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<int64_t>());
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+8);
|
||||
memcpy(&data[currentOffset], &_value, 8);
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void Buffer::internalAddParameter<uint64_t>(uint16_t _paramId, const uint64_t& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<uint64_t>());
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+8);
|
||||
memcpy(&data[currentOffset], &_value, 8);
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void Buffer::internalAddParameter<float>(uint16_t _paramId, const float& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<float>());
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+4);
|
||||
memcpy(&data[currentOffset], &_value, 4);
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void Buffer::internalAddParameter<double>(uint16_t _paramId, const double& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<double>());
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+8);
|
||||
memcpy(&data[currentOffset], &_value, 8);
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
template<>
|
||||
void Buffer::internalAddParameter<bool>(uint16_t _paramId, const bool& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<bool>());
|
||||
if (_value == true) {
|
||||
data.push_back('T');
|
||||
} else {
|
||||
data.push_back('F');
|
||||
}
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
#define ZEUS_MINIMUM_SIZE_MULTIPLE (1024*50)
|
||||
|
||||
class SendData {
|
||||
private:
|
||||
std::vector<uint8_t> m_data;
|
||||
@ -340,38 +341,36 @@ namespace zeus {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
}
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<zeus::File>(uint16_t _paramId, const zeus::File& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<zeus::File>());
|
||||
// set mine type in string:
|
||||
std::string name = _value.getMineType();
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+name.size()+1);
|
||||
memcpy(&data[currentOffset], &name[0], name.size());
|
||||
// finish with '\0'
|
||||
currentOffset = data.size()-1;
|
||||
data[currentOffset] = 0;
|
||||
// set size if the file in int32_t
|
||||
int32_t size = _value.getTheoricFileSize();
|
||||
currentOffset = data.size();
|
||||
data.resize(data.size()+sizeof(int32_t));
|
||||
memcpy(&data[currentOffset], &size, sizeof(int32_t));
|
||||
// and now the data (can be none ...):
|
||||
const std::vector<uint8_t>& dataFile = _value.getData();
|
||||
if (dataFile.size() != 0) {
|
||||
template<>
|
||||
void Buffer::internalAddParameter<zeus::File>(uint16_t _paramId, const zeus::File& _value) {
|
||||
std::vector<uint8_t> data;
|
||||
addType(data, createType<zeus::File>());
|
||||
// set mine type in string:
|
||||
std::string name = _value.getMineType();
|
||||
int32_t currentOffset = data.size();
|
||||
data.resize(data.size()+name.size()+1);
|
||||
memcpy(&data[currentOffset], &name[0], name.size());
|
||||
// finish with '\0'
|
||||
currentOffset = data.size()-1;
|
||||
data[currentOffset] = 0;
|
||||
// set size if the file in int32_t
|
||||
int32_t size = _value.getTheoricFileSize();
|
||||
currentOffset = data.size();
|
||||
if (dataFile.size() < ZEUS_MINIMUM_SIZE_MULTIPLE) {
|
||||
data.resize(data.size()+dataFile.size());
|
||||
memcpy(&data[currentOffset], &dataFile[0], dataFile.size());
|
||||
} else {
|
||||
m_multipleSend.push_back(zeus::SendData(dataFile, _paramId));
|
||||
data.resize(data.size()+sizeof(int32_t));
|
||||
memcpy(&data[currentOffset], &size, sizeof(int32_t));
|
||||
// and now the data (can be none ...):
|
||||
const std::vector<uint8_t>& dataFile = _value.getData();
|
||||
if (dataFile.size() != 0) {
|
||||
currentOffset = data.size();
|
||||
if (dataFile.size() < ZEUS_MINIMUM_SIZE_MULTIPLE) {
|
||||
data.resize(data.size()+dataFile.size());
|
||||
memcpy(&data[currentOffset], &dataFile[0], dataFile.size());
|
||||
} else {
|
||||
m_multipleSend.push_back(zeus::SendData(dataFile, _paramId));
|
||||
}
|
||||
}
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
m_parameter.push_back(std::make_pair(2,data));
|
||||
}
|
||||
namespace zeus {
|
||||
class SendFile {
|
||||
private:
|
||||
etk::FSNode m_node;
|
||||
@ -416,25 +415,26 @@ namespace zeus {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
template<>
|
||||
void Buffer::internalAddParameter<zeus::FileServer>(uint16_t _paramId, const zeus::FileServer& _value) {
|
||||
etk::FSNode node(_value.getFileName());
|
||||
node.fileOpenRead();
|
||||
std::string extention = std::string(_value.getFileName().begin()+_value.getFileName().size() -3, _value.getFileName().end());
|
||||
ZEUS_WARNING("send file: '" << _value.getFileName() << "' with extention: '" << extention << "'");
|
||||
uint64_t size = node.fileSize();
|
||||
std::vector<uint8_t> fileData;
|
||||
if (size < ZEUS_MINIMUM_SIZE_MULTIPLE) {
|
||||
// if the file is small ==> send directly ...
|
||||
fileData.resize(size);
|
||||
node.fileRead(&fileData[0], 1, size);
|
||||
}
|
||||
zeus::File tmpFile(zeus::getMineType(extention), fileData, size);
|
||||
internalAddParameter(_paramId, tmpFile);
|
||||
node.fileClose();
|
||||
if (size >= ZEUS_MINIMUM_SIZE_MULTIPLE) {
|
||||
m_multipleSend.push_back(zeus::SendFile(_value.getFileName(), _paramId, size));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template<>
|
||||
void zeus::Buffer::internalAddParameter<zeus::FileServer>(uint16_t _paramId, const zeus::FileServer& _value) {
|
||||
etk::FSNode node(_value.getFileName());
|
||||
node.fileOpenRead();
|
||||
std::string extention = std::string(_value.getFileName().begin()+_value.getFileName().size() -3, _value.getFileName().end());
|
||||
ZEUS_WARNING("send file: '" << _value.getFileName() << "' with extention: '" << extention << "'");
|
||||
uint64_t size = node.fileSize();
|
||||
std::vector<uint8_t> fileData;
|
||||
if (size < ZEUS_MINIMUM_SIZE_MULTIPLE) {
|
||||
// if the file is small ==> send directly ...
|
||||
fileData.resize(size);
|
||||
node.fileRead(&fileData[0], 1, size);
|
||||
}
|
||||
zeus::File tmpFile(zeus::getMineType(extention), fileData, size);
|
||||
internalAddParameter(_paramId, tmpFile);
|
||||
node.fileClose();
|
||||
if (size >= ZEUS_MINIMUM_SIZE_MULTIPLE) {
|
||||
m_multipleSend.push_back(zeus::SendFile(_value.getFileName(), _paramId, size));
|
||||
}
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user