1.. _Flow_Graph_Message_Passing_Protocol: 2 3Flow Graph Basics: Message Passing Protocol 4=========================================== 5 6 7|full_name| flow graph operates by passing 8messages between nodes. A node may not be able to receive and process a 9message from its predecessor. For a graph to operate most-efficiently, 10if this occurs the state of the edge between the nodes can change its 11state to pull so when the successor is able to handle a message it can 12query its predecessor to see if a message is available. If the edge did 13not reverse from push to pull, the predecessor node would have to 14repeatedly attempt to forward its message until the successor accepts 15it. This would consume resources needlessly. 16 17 18Once the edge is in pull mode, when the successor is not busy, it will 19try to pull a message from a predecessor. 20 21 22#. If a predecessor has a message, the successor will process it and the 23 edge will remain in pull mode. 24#. If the predecessor has no message, the edge between the nodes will 25 switch from pull to push mode. 26 27 28The state diagram of this Push-Pull protocol is: 29 30 31.. container:: fignone 32 :name: basic_push_pull 33 34 35 **The dynamic push / pull protocol.** 36 37 38 .. container:: imagecenter 39 40 41 |image0| 42 43 44.. |image0| image:: Images/flow_graph_message_passing_protocol.jpg 45 :width: 442px 46 :height: 196px 47 48