Index: templates/TypeBuilder_cpp.template |
diff --git a/templates/TypeBuilder_cpp.template b/templates/TypeBuilder_cpp.template |
index b63a0e880ddc502d68ca0be325907cf8d33750f2..23b6f5399089609af71ac4c5878aae9e171e0a62 100644 |
--- a/templates/TypeBuilder_cpp.template |
+++ b/templates/TypeBuilder_cpp.template |
@@ -47,7 +47,7 @@ const char* {{type.id}}::{{property.name | to_title_case}}Enum::{{literal | dash |
{% endfor %} |
{% if not (type.type == "object") or not ("properties" in type) %}{% continue %}{% endif %} |
-std::unique_ptr<{{type.id}}> {{type.id}}::parse(protocol::Value* value, ErrorSupport* errors) |
+std::unique_ptr<{{type.id}}> {{type.id}}::fromValue(protocol::Value* value, ErrorSupport* errors) |
{ |
if (!value || value->type() != protocol::Value::TypeObject) { |
errors->addError("object expected"); |
@@ -62,11 +62,11 @@ std::unique_ptr<{{type.id}}> {{type.id}}::parse(protocol::Value* value, ErrorSup |
{% if property.optional %} |
if ({{property.name}}Value) { |
errors->setName("{{property.name}}"); |
- result->m_{{property.name}} = ValueConversions<{{resolve_type(property).raw_type}}>::parse({{property.name}}Value, errors); |
+ result->m_{{property.name}} = ValueConversions<{{resolve_type(property).raw_type}}>::fromValue({{property.name}}Value, errors); |
} |
{% else %} |
errors->setName("{{property.name}}"); |
- result->m_{{property.name}} = ValueConversions<{{resolve_type(property).raw_type}}>::parse({{property.name}}Value, errors); |
+ result->m_{{property.name}} = ValueConversions<{{resolve_type(property).raw_type}}>::fromValue({{property.name}}Value, errors); |
{% endif %} |
{% endfor %} |
errors->pop(); |
@@ -75,15 +75,15 @@ std::unique_ptr<{{type.id}}> {{type.id}}::parse(protocol::Value* value, ErrorSup |
return result; |
} |
-std::unique_ptr<protocol::DictionaryValue> {{type.id}}::serialize() const |
+std::unique_ptr<protocol::DictionaryValue> {{type.id}}::toValue() const |
{ |
std::unique_ptr<protocol::DictionaryValue> result = DictionaryValue::create(); |
{% for property in type.properties %} |
{% if property.optional %} |
if (m_{{property.name}}.isJust()) |
- result->setValue("{{property.name}}", ValueConversions<{{resolve_type(property).raw_type}}>::serialize(m_{{property.name}}.fromJust())); |
+ result->setValue("{{property.name}}", ValueConversions<{{resolve_type(property).raw_type}}>::toValue(m_{{property.name}}.fromJust())); |
{% else %} |
- result->setValue("{{property.name}}", ValueConversions<{{resolve_type(property).raw_type}}>::serialize({{resolve_type(property).to_raw_type % ("m_" + property.name)}})); |
+ result->setValue("{{property.name}}", ValueConversions<{{resolve_type(property).raw_type}}>::toValue({{resolve_type(property).to_raw_type % ("m_" + property.name)}})); |
{% endif %} |
{% endfor %} |
return result; |
@@ -92,13 +92,13 @@ std::unique_ptr<protocol::DictionaryValue> {{type.id}}::serialize() const |
std::unique_ptr<{{type.id}}> {{type.id}}::clone() const |
{ |
ErrorSupport errors; |
- return parse(serialize().get(), &errors); |
+ return fromValue(toValue().get(), &errors); |
} |
{% if type.exported %} |
{{config.exported.string_out}} {{type.id}}::toJSONString() const |
{ |
- String json = serialize()->toJSONString(); |
+ String json = toValue()->serialize(); |
return {{config.exported.to_string_out % "json"}}; |
} |
@@ -109,7 +109,7 @@ std::unique_ptr<API::{{type.id}}> API::{{type.id}}::fromJSONString(const {{confi |
std::unique_ptr<Value> value = StringUtil::parseJSON(json); |
if (!value) |
return nullptr; |
- return protocol::{{domain.domain}}::{{type.id}}::parse(value.get(), &errors); |
+ return protocol::{{domain.domain}}::{{type.id}}::fromValue(value.get(), &errors); |
} |
{% endif %} |
{% endfor %} |
@@ -156,20 +156,26 @@ void Frontend::{{event.name | to_method_case}}( |
{%- endif %} {{parameter.name}}{%- if not loop.last -%}, {% endif -%} |
{% endfor -%}) |
{ |
- std::unique_ptr<protocol::DictionaryValue> jsonMessage = DictionaryValue::create(); |
- jsonMessage->setString("method", "{{domain.domain}}.{{event.name}}"); |
- std::unique_ptr<protocol::DictionaryValue> paramsObject = DictionaryValue::create(); |
- {% for parameter in event.parameters %} |
- {% if "optional" in parameter %} |
+ if (!m_frontendChannel) |
+ return; |
+ {% if event.parameters %} |
+ std::unique_ptr<{{event.name | to_title_case}}Notification> messageData = {{event.name | to_title_case}}Notification::{{"create" | to_method_case}}() |
+ {% for parameter in event.parameters %} |
+ {% if not "optional" in parameter %} |
+ .{{"set" | to_method_case}}{{parameter.name | to_title_case}}({{resolve_type(parameter).to_pass_type % parameter.name}}) |
+ {% endif %} |
+ {% endfor %} |
+ .{{ "build" | to_method_case }}(); |
+ {% for parameter in event.parameters %} |
+ {% if "optional" in parameter %} |
if ({{parameter.name}}.isJust()) |
- paramsObject->setValue("{{parameter.name}}", ValueConversions<{{resolve_type(parameter).raw_type}}>::serialize({{parameter.name}}.fromJust())); |
+ messageData->{{"set" | to_method_case}}{{parameter.name | to_title_case}}(std::move({{parameter.name}}).takeJust()); |
+ {% endif %} |
+ {% endfor %} |
+ m_frontendChannel->sendProtocolNotification(InternalResponse::createNotification("{{domain.domain}}.{{event.name}}", std::move(messageData))); |
{% else %} |
- paramsObject->setValue("{{parameter.name}}", ValueConversions<{{resolve_type(parameter).raw_type}}>::serialize({{resolve_type(parameter).to_raw_type % parameter.name}})); |
+ m_frontendChannel->sendProtocolNotification(InternalResponse::createNotification("{{domain.domain}}.{{event.name}}")); |
{% endif %} |
- {% endfor %} |
- jsonMessage->setObject("params", std::move(paramsObject)); |
- if (m_frontendChannel) |
- m_frontendChannel->sendProtocolNotification(jsonMessage->toJSONString()); |
} |
{% endfor %} |
@@ -180,7 +186,7 @@ void Frontend::flush() |
void Frontend::sendRawNotification(const String& notification) |
{ |
- m_frontendChannel->sendProtocolNotification(notification); |
+ m_frontendChannel->sendProtocolNotification(InternalRawNotification::create(notification)); |
} |
// --------------------- Dispatcher. |
@@ -253,9 +259,9 @@ public: |
{% for parameter in command.returns %} |
{% if "optional" in parameter %} |
if ({{parameter.name}}.isJust()) |
- resultObject->setValue("{{parameter.name}}", ValueConversions<{{resolve_type(parameter).raw_type}}>::serialize({{parameter.name}}.fromJust())); |
+ resultObject->setValue("{{parameter.name}}", ValueConversions<{{resolve_type(parameter).raw_type}}>::toValue({{parameter.name}}.fromJust())); |
{% else %} |
- resultObject->setValue("{{parameter.name}}", ValueConversions<{{resolve_type(parameter).raw_type}}>::serialize({{resolve_type(parameter).to_raw_type % parameter.name}})); |
+ resultObject->setValue("{{parameter.name}}", ValueConversions<{{resolve_type(parameter).raw_type}}>::toValue({{resolve_type(parameter).to_raw_type % parameter.name}})); |
{% endif %} |
{% endfor %} |
sendIfActive(std::move(resultObject), DispatchResponse::OK()); |
@@ -286,11 +292,11 @@ DispatchResponse::Status DispatcherImpl::{{command.name}}(int callId, std::uniqu |
Maybe<{{resolve_type(property).raw_type}}> in_{{property.name}}; |
if ({{property.name}}Value) { |
errors->setName("{{property.name}}"); |
- in_{{property.name}} = ValueConversions<{{resolve_type(property).raw_type}}>::parse({{property.name}}Value, errors); |
+ in_{{property.name}} = ValueConversions<{{resolve_type(property).raw_type}}>::fromValue({{property.name}}Value, errors); |
} |
{% else %} |
errors->setName("{{property.name}}"); |
- {{resolve_type(property).type}} in_{{property.name}} = ValueConversions<{{resolve_type(property).raw_type}}>::parse({{property.name}}Value, errors); |
+ {{resolve_type(property).type}} in_{{property.name}} = ValueConversions<{{resolve_type(property).raw_type}}>::fromValue({{property.name}}Value, errors); |
{% endif %} |
{% endfor %} |
errors->pop(); |
@@ -335,9 +341,9 @@ DispatchResponse::Status DispatcherImpl::{{command.name}}(int callId, std::uniqu |
{% for parameter in command.returns %} |
{% if "optional" in parameter %} |
if (out_{{parameter.name}}.isJust()) |
- result->setValue("{{parameter.name}}", ValueConversions<{{resolve_type(parameter).raw_type}}>::serialize(out_{{parameter.name}}.fromJust())); |
+ result->setValue("{{parameter.name}}", ValueConversions<{{resolve_type(parameter).raw_type}}>::toValue(out_{{parameter.name}}.fromJust())); |
{% else %} |
- result->setValue("{{parameter.name}}", ValueConversions<{{resolve_type(parameter).raw_type}}>::serialize({{resolve_type(parameter).to_raw_type % ("out_" + parameter.name)}})); |
+ result->setValue("{{parameter.name}}", ValueConversions<{{resolve_type(parameter).raw_type}}>::toValue({{resolve_type(parameter).to_raw_type % ("out_" + parameter.name)}})); |
{% endif %} |
{% endfor %} |
} |