[DEV] add raw stream
This commit is contained in:
parent
9e2a9ed301
commit
aeb151e525
@ -35,7 +35,7 @@ list_of_known_type = [
|
|||||||
["file", "zeus::File"],
|
["file", "zeus::File"],
|
||||||
["stream", "zeus::Stream"],
|
["stream", "zeus::Stream"],
|
||||||
["json", "ejson::Object"],
|
["json", "ejson::Object"],
|
||||||
["buffer", "zeus::Buffer"],
|
["raw", "zeus::Raw"],
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
@ -78,7 +78,7 @@ class AttributeDefinition:
|
|||||||
|
|
||||||
def set_brief(self, desc):
|
def set_brief(self, desc):
|
||||||
self.name = "";
|
self.name = "";
|
||||||
self.brief = remove_start_stop_spacer(desc);
|
self.brief = remove_start_stop_spacer(desc).replace("\"", "\\\"")
|
||||||
self.type = "";
|
self.type = "";
|
||||||
|
|
||||||
def set_type(self, type):
|
def set_type(self, type):
|
||||||
@ -123,7 +123,7 @@ class FunctionDefinition:
|
|||||||
|
|
||||||
def set_brief(self, desc):
|
def set_brief(self, desc):
|
||||||
self.name = "";
|
self.name = "";
|
||||||
self.brief = remove_start_stop_spacer(desc);
|
self.brief = remove_start_stop_spacer(desc).replace("\"", "\\\"")
|
||||||
self.return_type = "";
|
self.return_type = "";
|
||||||
self.return_brief = "";
|
self.return_brief = "";
|
||||||
self.parameters = []
|
self.parameters = []
|
||||||
@ -132,8 +132,8 @@ class FunctionDefinition:
|
|||||||
for elem in self.parameters:
|
for elem in self.parameters:
|
||||||
if elem["name"] == "" \
|
if elem["name"] == "" \
|
||||||
and elem["brief"] == "":
|
and elem["brief"] == "":
|
||||||
elem["name"] = remove_start_stop_spacer(name);
|
elem["name"] = remove_start_stop_spacer(name)
|
||||||
elem["brief"] = remove_start_stop_spacer(desc);
|
elem["brief"] = remove_start_stop_spacer(desc).replace("\"", "\\\"")
|
||||||
return;
|
return;
|
||||||
self.parameters.append({
|
self.parameters.append({
|
||||||
"type":"",
|
"type":"",
|
||||||
@ -142,15 +142,15 @@ class FunctionDefinition:
|
|||||||
})
|
})
|
||||||
|
|
||||||
def set_return_comment(self, desc):
|
def set_return_comment(self, desc):
|
||||||
self.return_brief = remove_start_stop_spacer(desc);
|
self.return_brief = remove_start_stop_spacer(desc)
|
||||||
|
|
||||||
def set_return_type(self, type):
|
def set_return_type(self, type):
|
||||||
self.return_type = remove_start_stop_spacer(type);
|
self.return_type = remove_start_stop_spacer(type)
|
||||||
|
|
||||||
def add_parameter_type(self, type):
|
def add_parameter_type(self, type):
|
||||||
for elem in self.parameters:
|
for elem in self.parameters:
|
||||||
if elem["type"] == "":
|
if elem["type"] == "":
|
||||||
elem["type"] = remove_start_stop_spacer(type);
|
elem["type"] = remove_start_stop_spacer(type)
|
||||||
return;
|
return;
|
||||||
self.parameters.append({
|
self.parameters.append({
|
||||||
"type":remove_start_stop_spacer(type),
|
"type":remove_start_stop_spacer(type),
|
||||||
@ -273,7 +273,7 @@ class ServiceDefinition:
|
|||||||
self.name[-1] = capital_first(self.name[-1])
|
self.name[-1] = capital_first(self.name[-1])
|
||||||
|
|
||||||
def set_brief(self, value):
|
def set_brief(self, value):
|
||||||
self.brief = remove_start_stop_spacer(value)
|
self.brief = remove_start_stop_spacer(value).replace("\"", "\\\"")
|
||||||
|
|
||||||
def set_version(self, value):
|
def set_version(self, value):
|
||||||
self.version = remove_start_stop_spacer(value)
|
self.version = remove_start_stop_spacer(value)
|
||||||
@ -282,7 +282,7 @@ class ServiceDefinition:
|
|||||||
self.api = remove_start_stop_spacer(value)
|
self.api = remove_start_stop_spacer(value)
|
||||||
|
|
||||||
def add_author(self, value):
|
def add_author(self, value):
|
||||||
self.authors.append(remove_start_stop_spacer(value))
|
self.authors.append(remove_start_stop_spacer(value).replace("\"", "\\\""))
|
||||||
|
|
||||||
def add_function(self, value):
|
def add_function(self, value):
|
||||||
# TODO : Check if function already exist
|
# TODO : Check if function already exist
|
||||||
@ -319,6 +319,7 @@ class ServiceDefinition:
|
|||||||
out += "\n"
|
out += "\n"
|
||||||
out += "#include <etk/types.hpp>\n"
|
out += "#include <etk/types.hpp>\n"
|
||||||
out += "#include <eproperty/Value.hpp>\n"
|
out += "#include <eproperty/Value.hpp>\n"
|
||||||
|
out += "#include <zeus/Raw.hpp>\n"
|
||||||
out += "#include <string>\n"
|
out += "#include <string>\n"
|
||||||
out += "#include <vector>\n"
|
out += "#include <vector>\n"
|
||||||
out += "\n"
|
out += "\n"
|
||||||
|
@ -42,6 +42,7 @@ def configure(target, my_module):
|
|||||||
'zeus/AbstractFunction.cpp',
|
'zeus/AbstractFunction.cpp',
|
||||||
'zeus/FutureBase.cpp',
|
'zeus/FutureBase.cpp',
|
||||||
'zeus/Future.cpp',
|
'zeus/Future.cpp',
|
||||||
|
'zeus/Raw.cpp',
|
||||||
'zeus/Buffer.cpp',
|
'zeus/Buffer.cpp',
|
||||||
'zeus/BufferParameter.cpp',
|
'zeus/BufferParameter.cpp',
|
||||||
'zeus/BufferCall.cpp',
|
'zeus/BufferCall.cpp',
|
||||||
@ -71,6 +72,7 @@ def configure(target, my_module):
|
|||||||
'zeus/FutureData.hpp',
|
'zeus/FutureData.hpp',
|
||||||
'zeus/FutureBase.hpp',
|
'zeus/FutureBase.hpp',
|
||||||
'zeus/Future.hpp',
|
'zeus/Future.hpp',
|
||||||
|
'zeus/Raw.hpp',
|
||||||
'zeus/Buffer.hpp',
|
'zeus/Buffer.hpp',
|
||||||
'zeus/BufferParameter.hpp',
|
'zeus/BufferParameter.hpp',
|
||||||
'zeus/BufferCall.hpp',
|
'zeus/BufferCall.hpp',
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
#include <etk/stdTools.hpp>
|
#include <etk/stdTools.hpp>
|
||||||
#include <zeus/AbstractFunction.hpp>
|
#include <zeus/AbstractFunction.hpp>
|
||||||
#include <zeus/ObjectRemote.hpp>
|
#include <zeus/ObjectRemote.hpp>
|
||||||
|
#include <zeus/Raw.hpp>
|
||||||
#include <climits>
|
#include <climits>
|
||||||
namespace zeus {
|
namespace zeus {
|
||||||
template<>
|
template<>
|
||||||
@ -1472,6 +1473,21 @@ namespace zeus {
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
template<>
|
template<>
|
||||||
|
zeus::Raw BufferParameter::getParameter<zeus::Raw>(int32_t _id) const {
|
||||||
|
zeus::ParamType type = getParameterType(_id);
|
||||||
|
const uint8_t* pointer = getParameterPointer(_id);
|
||||||
|
uint32_t dataSize = getParameterSize(_id);
|
||||||
|
// TODO : Check size ...
|
||||||
|
if (createType<zeus::Raw>() == type) {
|
||||||
|
// get size if the file in int32_t
|
||||||
|
uint32_t size = 0;
|
||||||
|
memcpy(&size, pointer, sizeof(uint32_t));
|
||||||
|
return zeus::Raw(size, &pointer[sizeof(uint32_t)]);
|
||||||
|
}
|
||||||
|
ZEUS_ERROR("Can not get type from '" << type << "'");
|
||||||
|
return zeus::Raw();
|
||||||
|
}
|
||||||
|
template<>
|
||||||
ememory::SharedPtr<zeus::ObjectRemoteBase> BufferParameter::getParameter<ememory::SharedPtr<zeus::ObjectRemoteBase>>(const ememory::SharedPtr<zeus::WebServer>& _iface, int32_t _id) const {
|
ememory::SharedPtr<zeus::ObjectRemoteBase> BufferParameter::getParameter<ememory::SharedPtr<zeus::ObjectRemoteBase>>(const ememory::SharedPtr<zeus::WebServer>& _iface, int32_t _id) const {
|
||||||
ememory::SharedPtr<zeus::ObjectRemoteBase> out;
|
ememory::SharedPtr<zeus::ObjectRemoteBase> out;
|
||||||
zeus::ParamType type = getParameterType(_id);
|
zeus::ParamType type = getParameterType(_id);
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
#include <zeus/BufferAnswer.hpp>
|
#include <zeus/BufferAnswer.hpp>
|
||||||
#include <zeus/debug.hpp>
|
#include <zeus/debug.hpp>
|
||||||
|
|
||||||
#include <zeus/File.hpp>
|
#include <zeus/Raw.hpp>
|
||||||
#include <zeus/ObjectRemote.hpp>
|
#include <zeus/ObjectRemote.hpp>
|
||||||
|
|
||||||
namespace zeus {
|
namespace zeus {
|
||||||
@ -324,18 +324,16 @@ namespace zeus {
|
|||||||
return out;
|
return out;
|
||||||
}
|
}
|
||||||
template<>
|
template<>
|
||||||
zeus::File zeus::Future<zeus::File>::get() {
|
zeus::Raw zeus::Future<zeus::Raw>::get() {
|
||||||
zeus::File out;
|
|
||||||
if ( m_data == nullptr
|
if ( m_data == nullptr
|
||||||
|| m_data->m_returnData == nullptr) {
|
|| m_data->m_returnData == nullptr) {
|
||||||
return out;
|
return zeus::Raw();
|
||||||
}
|
}
|
||||||
if (m_data->m_returnData->getType() != zeus::Buffer::typeMessage::answer) {
|
if (m_data->m_returnData->getType() != zeus::Buffer::typeMessage::answer) {
|
||||||
ZEUS_WARNING("No Return value ...");
|
ZEUS_WARNING("No Return value ...");
|
||||||
return out;
|
return zeus::Raw();
|
||||||
}
|
}
|
||||||
out = static_cast<zeus::BufferAnswer*>(m_data->m_returnData.get())->getAnswer<zeus::File>();
|
return static_cast<zeus::BufferAnswer*>(m_data->m_returnData.get())->getAnswer<zeus::Raw>();
|
||||||
return out;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -99,20 +99,20 @@ namespace zeus { \
|
|||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
|
||||||
generate_basic_type(void, "void", 0x1, false, false);
|
generate_basic_type(void, "void", 0x0001, false, false);
|
||||||
generate_basic_type(bool, "bool", 0x2, false, false);
|
generate_basic_type(bool, "bool", 0x0002, false, false);
|
||||||
generate_basic_type(float, "float", 0x3, true, false);
|
generate_basic_type(float, "float", 0x0003, true, false);
|
||||||
generate_basic_type(double, "double", 0x4, true, false);
|
generate_basic_type(double, "double", 0x0004, true, false);
|
||||||
generate_basic_type(int64_t, "int64", 0x5, true, false);
|
generate_basic_type(int64_t, "int64", 0x0005, true, false);
|
||||||
generate_basic_type(int32_t, "int32", 0x6, true, false);
|
generate_basic_type(int32_t, "int32", 0x0006, true, false);
|
||||||
generate_basic_type(int16_t, "int16", 0x7, true, false);
|
generate_basic_type(int16_t, "int16", 0x0007, true, false);
|
||||||
generate_basic_type(int8_t, "int8", 0x8, true, false);
|
generate_basic_type(int8_t, "int8", 0x0008, true, false);
|
||||||
generate_basic_type(uint64_t, "uint64", 0x9, true, false);
|
generate_basic_type(uint64_t, "uint64", 0x0009, true, false);
|
||||||
generate_basic_type(uint32_t, "uint32", 0xA, true, false);
|
generate_basic_type(uint32_t, "uint32", 0x000A, true, false);
|
||||||
generate_basic_type(uint16_t, "uint16", 0xB, true, false);
|
generate_basic_type(uint16_t, "uint16", 0x000B, true, false);
|
||||||
generate_basic_type(uint8_t, "uint8", 0xC, true, false);
|
generate_basic_type(uint8_t, "uint8", 0x000C, true, false);
|
||||||
generate_basic_type(std::string, "string", 0xD, false, false);
|
generate_basic_type(std::string, "string", 0x000D, false, false);
|
||||||
|
generate_basic_type(zeus::Raw, "raw", 0x000E, false, false);
|
||||||
|
|
||||||
generate_basic_type(std::vector<void>, "vector:empty", 0x0102, true, true);
|
generate_basic_type(std::vector<void>, "vector:empty", 0x0102, true, true);
|
||||||
generate_basic_type(std::vector<bool>, "vector:bool", 0x0102, false, true);
|
generate_basic_type(std::vector<bool>, "vector:bool", 0x0102, false, true);
|
||||||
@ -128,6 +128,7 @@ generate_basic_type(std::vector<uint16_t>, "vector:uint16", 0x010B, true, true);
|
|||||||
generate_basic_type(std::vector<uint8_t>, "vector:uint8", 0x010C, true, true);
|
generate_basic_type(std::vector<uint8_t>, "vector:uint8", 0x010C, true, true);
|
||||||
generate_basic_type(std::vector<std::string>, "vector:string", 0x010D, false, true);
|
generate_basic_type(std::vector<std::string>, "vector:string", 0x010D, false, true);
|
||||||
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
generate_basic_type(zeus::File, "file", 0x000E, false, false);
|
generate_basic_type(zeus::File, "file", 0x000E, false, false);
|
||||||
generate_basic_type(zeus::FileServer, "file", 0x000E, false, false);
|
generate_basic_type(zeus::FileServer, "file", 0x000E, false, false);
|
||||||
|
0
zeus/Raw.cpp
Normal file
0
zeus/Raw.cpp
Normal file
66
zeus/Raw.hpp
Normal file
66
zeus/Raw.hpp
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
/** @file
|
||||||
|
* @author Edouard DUPIN
|
||||||
|
* @copyright 2016, Edouard DUPIN, all right reserved
|
||||||
|
* @license APACHE v2.0 (see license file)
|
||||||
|
*/
|
||||||
|
#pragma once
|
||||||
|
#include <etk/types.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
namespace zeus {
|
||||||
|
/**
|
||||||
|
* @brief Raw data Buffer
|
||||||
|
*/
|
||||||
|
class Raw {
|
||||||
|
private:
|
||||||
|
uint32_t m_size;
|
||||||
|
const uint8_t* m_dataExternal;
|
||||||
|
uint8_t* m_dataInternal;
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* @brief generic constructor
|
||||||
|
*/
|
||||||
|
Raw() :
|
||||||
|
m_size(0),
|
||||||
|
m_dataExternal(nullptr),
|
||||||
|
m_dataInternal(nullptr) {
|
||||||
|
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @brief generic constructor
|
||||||
|
*/
|
||||||
|
Raw(uint32_t _size) :
|
||||||
|
m_size(_size),
|
||||||
|
m_dataExternal(nullptr),
|
||||||
|
m_dataInternal(new uint8_t[_size]) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Raw(uint32_t _size, const uint8_t* _data) :
|
||||||
|
m_size(_size),
|
||||||
|
m_dataExternal(_data),
|
||||||
|
m_dataInternal(nullptr) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
~Raw() {
|
||||||
|
if (m_dataInternal != nullptr) {
|
||||||
|
delete[] m_dataInternal;
|
||||||
|
m_dataInternal = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint32_t size() const {
|
||||||
|
return m_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
const uint8_t* data() const {
|
||||||
|
if (m_dataExternal != nullptr) {
|
||||||
|
return m_dataExternal;
|
||||||
|
}
|
||||||
|
return m_dataInternal;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -17,4 +17,4 @@ string getMineType()
|
|||||||
|
|
||||||
#brief:get a part of the file (size < 64ko)
|
#brief:get a part of the file (size < 64ko)
|
||||||
#return:Buffer with the data
|
#return:Buffer with the data
|
||||||
buffer getPart(uint64, uint64)
|
raw getPart(uint64, uint64)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user