callback granularity
[swift-upb.git] / sendrecv.cpp
index bed623e..045abb3 100644 (file)
@@ -325,8 +325,10 @@ bin64_t Channel::OnData (Datagram& dgram) {  // TODO: HAVE NONE for corrupted da
     data_in_ = tintbin(NOW,bin64_t::NONE);
     if (!ok)
         return bin64_t::NONE;
+    bin64_t cover = transfer().ack_out().cover(pos);
     for(int i=0; i<transfer().cb_installed; i++)
-        transfer().callbacks[i](transfer().fd(),pos);  // FIXME FIXME FIXME
+        if (cover.layer()>=transfer().callbacks[i].agg)
+            transfer().callbacks[i].cb(transfer().fd(),pos);  // FIXME
     data_in_.bin = pos;
     if (pos!=bin64_t::NONE) {
         if (last_data_in_time_) {