2013-06-11 6 views
5

मैं एक libcppa अभिनेता के लिए उदाहरण कोड ढूंढ रहा हूं जो नए कनेक्शन के लिए बंदरगाह पर सुनता है और फिर नए कनेक्शन को संभालने के लिए नए कलाकारों को जन्म देता है।libcppa अभिनेता जो सॉकेट कनेक्शन पर अभिनेताओं को जन्म देता है

किसी भी मदद की सराहना की जाएगी।

धन्यवाद

उत्तर

2

आप अभिनेताओं पढ़ने/सॉकेट से/से सीधे लिखने के लिए करना चाहते हैं? एक उचित अभिनेता-आधारित आईओ अबास्ट्रक्शन अभी तक लागू नहीं किया गया है, लेकिन यह libcppa के अगले संस्करण (ट्यूनेड रहें) के लिए एक योजनाबद्ध सुविधा है। यदि आप केवल अपने कलाकारों को नेटवर्क के माध्यम से वितरित करना चाहते हैं, तो प्रकाशित/remote_actor फ़ंक्शन जोड़ी देखें।

/संपादन:

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

यह, नहीं पैमाने अच्छी तरह से करता है, क्योंकि आप एक बना देगा:

अभी के लिए, आप libcppa की उपयोगिता के कुछ ऊपर एक अवरुद्ध संस्करण प्राप्त है और चल रहा करने के लिए उपयोग कर सकते हैं प्रति कनेक्शन धागा, और यह बहुत ही सुरुचिपूर्ण नहीं है। इसके अलावा, सॉकेट और अन्य अभिनेताओं से प्राप्त संदेशों के माध्यम से प्राप्त संदेशों के बीच मल्टीप्लेक्स करना मुश्किल है। इसके रास्ते पर एक और सुरुचिपूर्ण समाधान है। ;)

+0

धन्यवाद @neverlord। मैं वास्तव में एक अभिनेता प्रति कनेक्शन चाहता हूं, इसलिए यह बहुत अच्छा काम करता है और फिर मैं मतदान का उपयोग करता हूं ताकि यह अवरुद्ध न हो। अच्छा काम करते रहें। आईओ आधारित अभिनेताओं को आजमाने के लिए इंतजार नहीं कर सकता :) ज़ीरोम आधारित अभिनेताओं को जोड़ने पर कोई योजना? –

+0

ज़ीरोएमक्यू टोडो सूची पर नहीं है, लेकिन libcppa ओपन सोर्स है। शायद आप एक कार्यान्वयन में योगदान देना चाहते हैं। ;) – neverlord

संबंधित मुद्दे