Кресты / Говнокод #28214 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
/**
 * @throw   std::system_error 
 */
auto udp_echo_service(int64_t sd) -> no_return_t {
    sockaddr_in remote{};
    io_work_t work{};
    io_buffer_t buf{};              // memory view to the 'storage'
    io_buffer_reserved_t storage{}; // each coroutine frame contains buffer

    while (true) {
        // packet length(read)
        auto len = co_await recv_from(sd, remote, buf = storage, work);
        // instead of length check, see the error from the 'io_work_t' object
        if (work.error())
            goto OnError;

        buf = {storage.data(), static_cast<size_t>(len)};
        len = co_await send_to(sd, remote, buf, work);
        if (work.error())
            goto OnError;

        assert(len == buf.size_bytes());
    }
    co_return;
OnError:
    // expect ERROR_OPERATION_ABORTED (the socket is closed in this case)
    const auto ec = work.error();
    const auto emsg = system_category().message(ec);
    fputs(emsg.c_str(), stderr);
}

https://github.com/luncliff/coroutine/blob/main/test/net_socket_udp_echo.cpp

Запостил: kcalbCube kcalbCube, (Updated )

Комментарии (9) RSS

  • >co_wait
    ко ко ко рутины это кру кру круто!!!

    недавно пытался жабоёба перевести на корутины кокококотлина
    но жабоёб всё равно пишет лапшу, и течёт
    максимум он может во фьючу


    Всё таки С++ это современный и удобный язык для программистов, а не говно для домохозяек, как все другие языки
    Ответить
    • Да. Я хотел себе поставить cppcoro, но там нет CMake листа. Нашёл в истории коммитов версию для кмейка, сделал форк, поправил баги, добавил субмодуль и уже после этого смог воспользоватся корутинами. Обожаю C++)
      Ответить
      • А зачем ты используешь помойные? Используй нормальные
        Ответить
        • Мне в контроллерах никакие корутины не требуются. Не столкнулся пока с ситуацией, где бы я такой задумался "эээх, вот были бы ко-ко-корутины, и тут бы все намного проще решалось".
          Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8