Raúl
Moderator
 Moderator
| Posts: 434 |  | Karma: 6
|
Re:Duda entre utilizar los Arbiter o no - 2008/07/18 17:59
Hola, la verdad es que con la documentación que hay a veces es dificil enterarse de cómo funcionan estas cosas...
La función spawniterator sirve para poder llamar directamente a un manejador de operación que devuelve el tipo IEnumerator<ITask> sin tener que usar el mecanismo normal. Además te permite pasar al manejador los parámetros que quieras explícitamente.
Sobre lo que preguntas de usar la primitiva arbiter creo que no lo entiendo muy bien. Tienes que usarlo cada vez que quieras usar un patrón de coordinación de CCR, como un Interleave o un activate (o una combinación). Algo muy normal es tener un interleave principal en el método start del servicio, por ejemplo:
| Code: | // Service main port Request Hander Setup
Activate(
Arbiter.Interleave(
new TeardownReceiverGroup(
// Default Service Drop
Arbiter.Receive<DsspDefaultDrop>(false, _mainPort, DropHandler)
),
new ExclusiveReceiverGroup(
// Sonar update handler
Arbiter.Receive<SonarUpdate>(true, _mainPort, SonarUpdateHandler),
// Bumper array update handler
Arbiter.Receive<BumpersUpdate>(true, _mainPort, BumpersUpdateHandler),
// Bumper update handler
Arbiter.Receive<BumperUpdate>(true, _mainPort, BumperUpdateHandler),
// Drive update handler
Arbiter.Receive<DriveUpdate>(true, _mainPort, DriveUpdateHandler)
),
new ConcurrentReceiverGroup(
// Default DSS Lookup handler
Arbiter.Receive<DsspDefaultLookup>(true, _mainPort, DefaultLookupHandler)
)
)
);
|
¿Te queda algo más claro?
Raúl Arrabales Moreno. conscious-robots.com/raul |