Define an event ADataReadyEvent with A as source and B as combined sink and listener |
A defines an instance Evtcontrol of ADataReadyEvent which has a method transferdata |
B instantiates an object Bcallback implementing interface ADataReadyListener with a method readytogo() |
B registers this listener object as a callback with A |
When A is ready to send data to B, A callbacks Bcallback.readtogo(ADataReadyEvent Evtcontrol) |
B calls back Evtcontrol.transferdata(sink information) |
Note that "control" mechanism uses powerful JavaBean approach (this is handshake) whereas one can use a totally different and faster approach to actually send data |
Traditional (in my world) mechanisms combine control and data transfer |