summaryrefslogtreecommitdiffstats
path: root/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/app-mgr/app-manager/message.c
diff options
context:
space:
mode:
Diffstat (limited to 'fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/app-mgr/app-manager/message.c')
-rw-r--r--fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/app-mgr/app-manager/message.c88
1 files changed, 88 insertions, 0 deletions
diff --git a/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/app-mgr/app-manager/message.c b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/app-mgr/app-manager/message.c
new file mode 100644
index 000000000..aac7a2364
--- /dev/null
+++ b/fluent-bit/lib/wasm-micro-runtime-WAMR-1.2.2/core/app-mgr/app-manager/message.c
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2019 Intel Corporation. All rights reserved.
+ * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+ */
+
+#include "app_manager.h"
+#include "app_manager_host.h"
+#include "event.h"
+#include "bi-inc/attr_container.h"
+#include "coap_ext.h"
+
+#if 0
+bool send_coap_packet_to_host(coap_packet_t * packet)
+{
+ int size;
+ uint8_t *buf;
+
+ size = coap_serialize_message_tcp(&packet, &buf);
+ if (!buf || size == 0)
+ return false;
+
+ app_manager_host_send_msg(buf, size);
+ APP_MGR_FREE(buf);
+
+ return true;
+}
+#endif
+
+bool
+send_request_to_host(request_t *msg)
+{
+ if (COAP_EVENT == msg->action && !event_is_registered(msg->url)) {
+ app_manager_printf("Event is not registered\n");
+ return false;
+ }
+
+ int size;
+ char *packet = pack_request(msg, &size);
+ if (packet == NULL)
+ return false;
+
+ app_manager_host_send_msg(REQUEST_PACKET, packet, size);
+
+ free_req_resp_packet(packet);
+
+ return true;
+}
+
+bool
+send_response_to_host(response_t *response)
+{
+ int size;
+ char *packet = pack_response(response, &size);
+ if (packet == NULL)
+ return false;
+
+ app_manager_host_send_msg(RESPONSE_PACKET, packet, size);
+
+ free_req_resp_packet(packet);
+
+ return true;
+}
+
+bool
+send_error_response_to_host(int mid, int status, const char *msg)
+{
+ int payload_len = 0;
+ attr_container_t *payload = NULL;
+ response_t response[1] = { 0 };
+
+ if (msg) {
+ payload = attr_container_create("");
+ if (payload) {
+ attr_container_set_string(&payload, "error message", msg);
+ payload_len = attr_container_get_serialize_length(payload);
+ }
+ }
+
+ set_response(response, status, FMT_ATTR_CONTAINER, (const char *)payload,
+ payload_len);
+ response->mid = mid;
+
+ send_response_to_host(response);
+
+ if (payload)
+ attr_container_destroy(payload);
+ return true;
+}