Bug #2555
closed
Emission semantics of Face::onSend(Interest|Data) is too vague
Added by Davide Pesavento over 9 years ago.
Updated almost 9 years ago.
Description
Current doxygen says:
/// fires when an Interest is sent out
signal::Signal<Face, Interest> onSendInterest;
/// fires when a Data is sent out
signal::Signal<Face, Data> onSendData;
When are they emitted exactly?
- before attempting to send
- after the send operation has been scheduled
- when the result of the operation is known
(2 and 3 are indistinguishable if the send path is blocking/synchronous)
In the second and third cases, are the signals emitted only if the operation was successful or even in case of failure?
At least in StreamFace (TCP, Unix) and EthernetFace these events fire before attempting to send. So, I think it make sense to explicitly state and make sure everywhere that it is event "before" attempting to send. Or even to track the attempt to send data/interest from higher levels.
Do you want just clarify the documentation or you want to change the behavior?
Alex Afanasyev wrote:
Do you want just clarify the documentation or you want to change the behavior?
I want to understand what were the original intentions. If no one remembers or if there never was a clear specification, let's decide one now that makes sense. We could even have separate signals for "before send" and "after send" (whatever that means).
Also note that these signals are used to increment the face counters, which I'm not sure it's a good idea given the current emission behavior.
This bug would become irrelevant if #2222 note-22 is adopted, because that design does not contain an equivalent for Face::onSendX
.
Face::onSendX
is only used for incrementing counters, which is implemented in Link
base class of that design.
- Status changed from New to Rejected
Face::onSendX
signals are deleted in #3172. This issue is no longer relevant.
Also available in: Atom
PDF