Актер libcppa, который порождает актеров на сокетных соединениях

Я ищу пример кода для актера libcppa, который прослушивает порт для нового соединения, а затем порождает новых акторов для обработки нового соединения.

Любая помощь будет оценена.

Спасибо

5

Решение

Вы хотите, чтобы актеры читали / писали прямо из / в сокет? Надлежащая абстракция ввода-вывода на основе акторов еще не реализована, но это запланированная функция для следующей версии libcppa (следите за обновлениями). Если вы хотите распространять своих актеров только по сети, взгляните на пару функций publish / remote_actor.

/редактировать:

На данный момент вы можете использовать утилиту libcppa для запуска и запуска блокирующей версии:

using namespace cppa;
spawn<detached>([] {
auto ack = network::ipv4_acceptor::create(4242);
for (;;) {
auto spair = ack->accept_connection();
spawn<detached>([spair] {
// spair.first is the input stream
// spair.second is the output stream
// please see http://neverlord.github.io/libcppa/namespacecppa_1_1network.html
});
}
);

Это делает не хорошо масштабируется, потому что вы создадите поток для каждого соединения, и это не очень элегантно. Кроме того, трудно мультиплексировать между сообщениями, полученными через сокет, и сообщениями, полученными от других участников. Более элегантное решение уже в пути. 😉

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector