예제 #1
0
 void on_delivery_accept(proton::event &e) {
     confirmed++;
     if (confirmed == total) {
         std::cout << "all messages confirmed" << std::endl;
         e.connection().close();
         acceptor.close();
     }
 }
예제 #2
0
 void on_connection_open(proton::event &e, proton::connection &c) override {
     std::cout << "Inbound server connection connected via SSL.  Protocol: " <<
         c.transport().ssl().protocol() << std::endl;
     if (c.transport().sasl().outcome() == sasl::OK) {
         std::string subject = c.transport().ssl().remote_subject();
         std::cout << "Inbound client certificate identity " << find_CN(subject) << std::endl;
     }
     else {
         std::cout << "Inbound client authentication failed" <<std::endl;
         c.close();
     }
     inbound_listener.close();
 }
예제 #3
0
 void on_message(proton::event &e) {
     proton::message& msg = e.message();
     if (msg.id().get<uint64_t>() < received)
         return; // ignore duplicate
     if (expected == 0 || received < expected) {
         std::cout << msg.body() << std::endl;
         received++;
     }
     if (received == expected) {
         e.receiver().close();
         e.connection().close();
         if (!!acceptor) acceptor.close();
     }
 }
예제 #4
0
    void on_message(proton::delivery &d, proton::message &msg) override {
        if (proton::coerce<uint64_t>(msg.id()) < received) {
            return; // Ignore duplicate
        }

        if (expected == 0 || received < expected) {
            std::cout << msg.body() << std::endl;
            received++;
        }

        if (received == expected) {
            d.receiver().close();
            d.connection().close();

            if (!!acceptor) acceptor.close();
        }
    }
예제 #5
0
 void on_connection_open(proton::connection &c) override {
     std::cout << "Inbound server connection connected via SSL.  Protocol: " <<
         c.transport().ssl().protocol() << std::endl;
     acceptor.close();
 }