2013-06-11 6 views

Antwort

2

Haben Sie die Schauspieler wollen von/an die Buchse direkt lesen/schreiben? Eine geeignete Aktor-basierte E/A-Abstraktion ist noch nicht implementiert, aber es ist eine geplante Funktion für die nächste Version von libcppa (stay tuned). Wenn Sie Ihre Akteure nur über das Netzwerk verteilen möchten, sehen Sie sich das Funktionspaar publish/remote_actor an.

/edit:

Vorerst können Sie einige libcppa des Versorgers verwenden, um eine Blockierung Version und zum Laufen zu bringen:

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

Dies gilt nicht Skala gut, weil Sie ein schaffen Thread pro Verbindung, und es ist nicht sehr elegant. Außerdem ist es schwierig, zwischen Nachrichten, die über den Socket empfangen werden, und Nachrichten anderer Akteure zu multiplexen. Eine elegantere Lösung ist auf dem Weg. ;)

+0

Danke @neverlord. Ich möchte eigentlich einen Actor pro Verbindung, also funktioniert es super und dann benutze ich Polling damit es nicht blockt. Mach weiter so. Ich kann es kaum erwarten, die IO-basierten Akteure auszuprobieren :) Gibt es Pläne, auf Zeromq basierende Akteure hinzuzufügen? –

+0

ZeroMQ ist nicht auf der ToDo-Liste, aber libcppa ist Open Source. Vielleicht möchten Sie eine Implementierung beitragen. ;) – neverlord