message.c 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /*
  2. * Copyright (C) 2019 Intel Corporation. All rights reserved.
  3. * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  4. */
  5. #include "app_manager.h"
  6. #include "app_manager_host.h"
  7. #include "event.h"
  8. #include "bi-inc/attr_container.h"
  9. #include "coap_ext.h"
  10. #if 0
  11. bool send_coap_packet_to_host(coap_packet_t * packet)
  12. {
  13. int size;
  14. uint8_t *buf;
  15. size = coap_serialize_message_tcp(&packet, &buf);
  16. if (!buf || size == 0)
  17. return false;
  18. app_manager_host_send_msg(buf, size);
  19. APP_MGR_FREE(buf);
  20. return true;
  21. }
  22. #endif
  23. bool
  24. send_request_to_host(request_t *msg)
  25. {
  26. if (COAP_EVENT == msg->action && !event_is_registered(msg->url)) {
  27. app_manager_printf("Event is not registered\n");
  28. return false;
  29. }
  30. int size;
  31. char *packet = pack_request(msg, &size);
  32. if (packet == NULL)
  33. return false;
  34. app_manager_host_send_msg(REQUEST_PACKET, packet, size);
  35. free_req_resp_packet(packet);
  36. return true;
  37. }
  38. bool
  39. send_response_to_host(response_t *response)
  40. {
  41. int size;
  42. char *packet = pack_response(response, &size);
  43. if (packet == NULL)
  44. return false;
  45. app_manager_host_send_msg(RESPONSE_PACKET, packet, size);
  46. free_req_resp_packet(packet);
  47. return true;
  48. }
  49. bool
  50. send_error_response_to_host(int mid, int status, const char *msg)
  51. {
  52. int payload_len = 0;
  53. attr_container_t *payload = NULL;
  54. response_t response[1] = { 0 };
  55. if (msg) {
  56. payload = attr_container_create("");
  57. if (payload) {
  58. attr_container_set_string(&payload, "error message", msg);
  59. payload_len = attr_container_get_serialize_length(payload);
  60. }
  61. }
  62. set_response(response, status, FMT_ATTR_CONTAINER, (const char *)payload,
  63. payload_len);
  64. response->mid = mid;
  65. send_response_to_host(response);
  66. if (payload)
  67. attr_container_destroy(payload);
  68. return true;
  69. }