Object Browser documentation about Arbiter

I have a few questions about what I see in Object Browser about Arbiter.

Arbiter methods that activate

  • Arbiter.Activatereturns void
  • Arbiter.ExecuteToCompletionreturns ITask(maybe) [*1]

Arbiter methods that return an instance of ITask

  • Arbiter.FromHandler
  • Arbiter.FromIteratorHandler

Arbiter methods that return an instance of a type of arbiter [*2]

  • Arbiter.Receivereturns a Receiver arbiter [*3]
  • Arbiter.ReceiveFromPortSetreturns a Receiver arbiter [*4]
  • Arbiter.ReceiveWithIteratorreturns a Receiver arbiter
  • Arbiter.ReceiveWithIteratorFromPortSetreturns a Receiver arbiter
  • Arbiter.Choicereturns a Choice arbiter
  • Arbiter.Interleavereturns something [*5]
  • Arbiter.JoinedReceivereturns a JoinReceiver arbiter
  • Arbiter.JoinedReceiveWithIteratorreturns a JoinReceiver arbiter
  • Arbiter.MultiplePortReceivereturns JoinReceiver arbiter
  • Arbiter.MultipleItemReceivereturns different things [*6], [*7], [*8]

Note:Please don’t interpret the bold as shouting.I just wanted the questions to stand out.I have no attitude, just questions.

[*1]In the documentation in Object Browser this has two overloads.The first overload returns void (according to the syntax), but the return section says that it returns ITask.Which is correct?

[*2]The CCR User guide refers to the objects that these methods return as “arbiters”, but I do not see them derived from the Arbiter class.What makes them “arbiters”?

[*3]In the documentation in Object Browser this has two overloads.The second overload does not show a returns section, but it shows a return value of a Receiver arbiter in the syntax.Is this correct?

[*4]According to the documentation in Object Browser, the second overloaded method returns Receiver (according to the syntax), but there is not a return section.Does it return this object or not?

[*5]According to the documentation in Object Browser, the syntax shows this method returns Interleave, but the returns section shows it returns Choice.Which is correct?

[*6]According to the documentation in Object Browser, the first overloaded method returns MultipleItemReceiver (according to the syntax), but there is not a return section.Does it return this object or not?

[*7]According to the documentation in Object Browser, the second overloaded method returns JointSinglePortReceiver (according to the syntax), but there is not a return section.Does it return this object and if so, why is this different than the other ones?I guess technically this is not an overload, just different methods that unfortunately happen to have the same name.

[*8]According to the documentation in Object Browser, the second overloaded method returns MultipleItemGather (according to the syntax), but there is not a return section.Does it return this object and if so, why is this different than the other ones?I guess technically this is not an overload, just different methods that unfortunately happen to have the same name.

Thanks,

Dogulas

[7110 byte] By [Dogulas] at [2008-2-24]
# 1

Somethong to cover most of the questions. The Arbiter class is just a static class, a factory, for convenient access to the lower lever CCR primitives. What makes a CCR class an "arbiter" is its function: It arbitrates user delegates over messages received on ports. Its some constraint logic that prevent your code from firing unless the conditions are met. So its a just a name.

The Arbiter.* methods are not considered overloads. They are just static methods. A few have the same name with different parameters and they could be considered overloads of some base function (like Receive).

The MSRS documentation (integrated into VS) has comments on all these functions and their return types.

Hope this makes sense Smile

g

GeorgeChrysanthakopoulos at 2007-10-3 > top of Msdn Tech,Microsoft Robotics Studio,Microsoft Robotics - Concurrency and Coordination Runtime (CCR)...
# 2

George,

Thanks for the response. Your explanation of "arbiter" (lower case) helps a lot. When the CCR documentation says:

"The Arbiter static class provides helper routines for creating instances all CCR Arbiter classes, in a discoverable, type safe manner."

It is using the phrase "CCR Arbiter classes" to refer to a group of classes that perform arbitration functionality but are not necessarily related in an inheritance way. May I assume this group of classes consists of Choice, Receiver, Interleave, JoinReceiver, and JoinSinglePortReceiver? Is this an exhaustive list?

Whether the methods are overloads or not is not important to me. I understand how they work.

Most of the original questions were regarding the the documentation on the Object Browser window instead of the CCR documentation. I guess I'm seeing inconsistancies within Object Browser documentation. I use Object Browser a lot and that may be why I noticed them. I'm sure you guys are busy, but could someone put on their "to-do" list to take a look and see if there are some documentation bugs there? As a programmer, I'm aware that sometimes documentation gets placed on the back burner. I understand.

Thanks,

Dogulas

Dogulas at 2007-10-3 > top of Msdn Tech,Microsoft Robotics Studio,Microsoft Robotics - Concurrency and Coordination Runtime (CCR)...
# 3

How stupid of me. Forgive me, I totally missed that all five of these classes implement IArbiterTask. They ARE all related beyond their functionality. They can all be referred to as type IArbiterTask.

All is right with the world again. Sorry for taking up your time.

Dogulas

Dogulas at 2007-10-3 > top of Msdn Tech,Microsoft Robotics Studio,Microsoft Robotics - Concurrency and Coordination Runtime (CCR)...

Microsoft Robotics Studio

Site Classified