2013-06-11 11 views

risposta

2

Vuoi gli attori di leggere/scrivere direttamente dalla/alla presa? Una vera astrazione IO basata su attori non è ancora implementata, ma è una funzionalità pianificata per la prossima versione di libcppa (rimanete sintonizzati). Se vuoi solo distribuire i tuoi attori tramite la rete, dai un'occhiata alla coppia di funzioni publish/remote_actor.

/edit:

Per il momento, è possibile utilizzare alcune delle utility di libcppa per ottenere una versione di blocco installato e funzionante:

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 
     }); 
    } 
); 

Ciò non scala bene, perché si creerà un thread per connessione, e non è molto elegante. Inoltre, è difficile eseguire il multiplex tra i messaggi ricevuti tramite socket e i messaggi ricevuti da altri attori. Una soluzione più elegante è in arrivo. ;)

+0

Grazie @neverlord. In realtà voglio un attore per connessione, quindi funziona alla grande e quindi utilizzo il polling in modo che non blocchi. Mantenere il buon lavoro. Non vedo l'ora di provare gli attori basati su IO :) Qualche piano per aggiungere attori basati su zeromq? –

+0

ZeroMQ non è nell'elenco delle cose da fare, ma libcppa è open source. Forse vuoi contribuire con un'implementazione. ;) – neverlord

Problemi correlati