MCPcopy Create free account
hub / github.com/apache/qpid-proton / handle

Method handle

c/tests/proactor_test.cpp:793–848  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

791 complete() {}
792
793 bool handle(pn_event_t *e) {
794 switch (pn_event_type(e)) {
795 case PN_CONNECTION_BOUND:
796 pn_transport_set_max_frame(pn_event_transport(e), FRAME);
797 return false;
798
799 case PN_SESSION_INIT:
800 pn_session_set_incoming_capacity(pn_event_session(e),
801 FRAME); /* Single frame incoming */
802 pn_session_set_outgoing_window(pn_event_session(e),
803 1); /* Single frame outgoing */
804 return false;
805
806 case PN_LINK_REMOTE_OPEN:
807 common_handler::handle(e);
808 if (pn_link_is_receiver(pn_event_link(e))) {
809 pn_link_flow(pn_event_link(e), 1);
810 } else {
811 sender = pn_event_link(e);
812 }
813 return false;
814
815 case PN_LINK_FLOW: /* Start a delivery */
816 if (pn_link_is_sender(pn_event_link(e)) && !dlv) {
817 dlv = pn_delivery(pn_event_link(e), pn_dtag("x", 1));
818 }
819 return false;
820
821 case PN_CONNECTION_WAKE: { /* Send a chunk */
822 ssize_t remains = size - sent;
823 ssize_t n = (CHUNK < remains) ? CHUNK : remains;
824 CHECK(n == pn_link_send(sender, send_buf.start + sent, n));
825 sent += n;
826 if (sent == size) {
827 CHECK(pn_link_advance(sender));
828 }
829 return false;
830 }
831
832 case PN_DELIVERY: { /* Receive a delivery - smaller than a
833 chunk? */
834 pn_delivery_t *dlv = pn_event_delivery(e);
835 if (pn_delivery_readable(dlv)) {
836 ssize_t n = pn_delivery_pending(dlv);
837 rwbytes_ensure(&recv_buf, received + n);
838 REQUIRE(n ==
839 pn_link_recv(pn_event_link(e), recv_buf.start + received, n));
840 received += n;
841 }
842 complete = !pn_delivery_partial(dlv);
843 return true;
844 }
845 default:
846 return common_handler::handle(e);
847 }
848 }
849};
850

Callers

nothing calls this directly

Calls 15

pn_event_typeFunction · 0.85
pn_event_transportFunction · 0.85
pn_event_sessionFunction · 0.85
pn_link_is_receiverFunction · 0.85
pn_event_linkFunction · 0.85
pn_link_flowFunction · 0.85
pn_link_is_senderFunction · 0.85
pn_dtagFunction · 0.85
pn_link_advanceFunction · 0.85

Tested by

no test coverage detected