Это не кодирование, а в основном архитектурный вопрос ...
Например, у меня есть функция loop()
, в которой я получаю данные из какого-то источника (в моем случае UART). Код в значительной степени похож на этот (псевдокод):
loop() {
auto data = UART.GetData();
// differ data from each other and push it to corresponding message queue or golang-style channel?
Console.Print(data);
}
Мне нужно реализовать функцию asyn c REST HTTP, которая будет записывать (упорядочивать) данные из UART и ждать их поступления. Имейте в виду, что другие функции asyn c REST HTTP также могут запрашивать данные из UART и в этот момент. Код функции asyn c REST HTTP будет выглядеть следующим образом:
handler(AsyncRequest &req) {
UART.RequestNeededData(); // This function returns nothing. Data will be handled in loop() method
auto data = // somehow get this data from other method, in this case it's loop() (get data from message queue or Golang-style channel?)
req.SendDataToClient(data);
}
UART использует свой собственный протокол для различения запрошенных данных и ответов. Рассматривайте это как пакеты req / res. Мне нужно передать запрошенные данные из функции handler()
обратно в handler()
.
Надеюсь, вы поняли, что мне нужно сделать, и можете помочь мне с этой проблемой. Прокомментируйте, если у вас есть какие-либо вопросы.