JoinReceiver Class

Microsoft Robotics
Microsoft Robotics Class Reference
Join implementation across multiple ports

Namespace: Microsoft.Ccr.Core
Assembly: Microsoft.Ccr.Core (in Microsoft.Ccr.Core.dll) Version: (

public class JoinReceiver : JoinReceiverTask

The join arbiter will attach individual receivers on each port participating in the join. As messages get posted in the ports, the parent arbiter (an instance of JoinReceiver) will determine if it has messages across all ports. Without actually consuming the messages It will schedule a commit phase and try to extract, using the Test() method on the ports, all the messages required for the join to complete. If all messages are retrived, commit succeeds but the arbiter will still ask its parent (since join can be nested under choice or interleave) if it can proceed scheduling the user delegate. If it can, it schedules a task with all the messages as arguments. If it fails, it will call UnrollPartialCommit to put the messages back in their original ports