logo logo
Home arrow Forums...
Monday, 05 January 2009
 
 
English English  Español Español  
Upcoming Events
10.Jun. 2009

IWANN 2009
Salamanca, Spain
11.Jun. 2009

Toward a Science of Consciousness
Hong Kong, China
15.Jun. 2009

International Workshop on Machine Consciousness
Hong Kong, China
15.Jun. 2009

The 8th IEEE International Conference on Cognitive Informatics
Hong Kong, China
22.Jun. 2009

IWINAC 2009
Santiago de Compostela, Spain
Tag Cloud
Architectures Associations Books Conferences Conscious Consciousness Developer Documentación Documentation Español Howto Machine Machine Consciousness Machines Neuroscience Publications Research Researchers Reviews Robotics Robots Spanish Studio VPL
Spotlight
Conscious-Robots.com Forum  


sutaro
User

Gold Boarder
Posts: 47
graphgraph
Karma: 3  
Duda recibiendo el estado de un servicio - 2008/08/12 15:50 Hola, a todos, tengo una duda quizás un poco básica:
He creado un servicio llamado ServicioSena2 con algunas clases entre las que figura:

public class EstadoTotalSena : Submit<DsspDefaultUpdate, PortSet<ServicioSena2State, Fault>>

Ésta viene con sus respectivos constructores y una funcion que hace uso de ella con la siguiente cabecera:

[ServiceHandler(ServiceHandlerBehavior.Exclusive)]
public IEnumerator<ITask> Controller_ReceiveStateResponse(EstadoTotalSena estado)

Y en otro servicio diferente llamado SenaDrive establezco un contrato con ServicioSena2, en el que necesito saber o recibir de algún modo el estado de una clase de ServicioSena2 y lo intento de esta manera:


_senaPort.Post(estado);
Activate(Arbiter.Choice(estado.ResponsePort,
delegate(ServicioSena2State response)
{
LogInfo("La velocidad de Sena es "+response.Vel_DDer);
},
delegate(Fault fault)
{
LogInfo("Se ha producido un error al recibir el estado de Sena");
})
);

Pero me da el error:
### DsspForwarder:CaptureRequestException:Unhandled within causality context.. Exceptionroxy type not found for outbound request or response. Make sure you have compiled a proxy and transform dll for the target service.Outbound type:Microsoft.Dss.ServiceModel.Dssp.DsspDefaultUpdate Action:http://schemas.microsoft.com/xw/2004/10/dssp.htmlubmitRequest Body Type:Robotics.SenaDrive.RotateRequest Target Service:dssp.tcp://sutaro:50001/senadrive Source Service:dssp.tcp://sutaro:50001/model/application

Si alguien tiene una idea mejor de cómo recibir el estado de otro servicio mediante un contrato me vendría muy bien esa ayuda, ando un poco perdido en éso aún
Un saludo
  The administrator has disabled public write access. Please, register to participate in the forum.
Raúl
Moderator

Moderator
Posts: 444
graph
Karma: 6  
Re:Duda recibiendo el estado de un servicio - 2008/08/12 16:40 Hola, mira con detenimiento los tutoriales de servicios. Especialmente lo que se refiere a las suscripciones. Para recibir actualizaciones de estados de un servicio lo que tienes que hacer es implementar un manejador de suscripciones (en el servicio que provee la información) y desde el servicio que la consume suscribirte al proveedor.

El servicio proveedor de información hará esto cada vez que haya modificado su estado y quiera notificarlo a todos los servicios que estén suscritos:

Code:

 base.SendNotification<Replace>(_submgrPort_state);



Un manejador de suscripción es algo así (de todas formas míralo en los tutoriales de MSRS):

Code:

 /// <summary> /// Subscribe Handler. Manages subscription requests - Subscribe messages. /// </summary> /// <param name="subscribe"></param> /// <returns></returns> [ServiceHandler(ServiceHandlerBehavior.Exclusive)] public virtual IEnumerator<ITaskSubscribeHandler(pxsonar.Subscribe subscribe) {    SubscribeRequestType request subscribe.Body;    LogInfo("Subscribe request from: " request.Subscriber);    // Use the Subscription Manager to insert the new subscriber    yield return Arbiter.Choice(           SubscribeHelper(_submgrPortrequestsubscribe.ResponsePort),           delegate(SuccessResult success)           {                base.SendNotification<Replace>(_submgrPortrequest.Subscriber_state);           },           delegate(Exception e)           {                LogError(null"Subscribe failed"e);           }      );               yield break; }



Por otro lado, el servicio que va a escuchar la información que mande el servicio proveedor se suscribe haciendo algo así:

Code:

 // Subscribe to ArcosCore _arcosCorePort.Subscribe(_arcosCoreNotify);



Eso hace que a partir de ese momento reciba las notificaciones de actualización de estado del servicio al que se suscribe por el puerto de notificación especificado.

A lo mejor te he liado un poco con todo esto, lo mejor es que sigas paso a paso los tutoriales de servicios que se refieren a las suscripción..
Raúl Arrabales Moreno. conscious-robots.com/raul
  The administrator has disabled public write access. Please, register to participate in the forum.
sutaro
User

Gold Boarder
Posts: 47
graphgraph
Karma: 3  
Re:Duda recibiendo el estado de un servicio - 2008/08/15 04:19 Muchísimas gracias, era efectivamente éso, el servicio no lo había suscrito de manera correcta, llevo una semana comiéndome la cabeza por éso y no le encontraba solución al problema, ¡eres un crack!

Mensaje editado por: sutaro, el: 2008/08/15 04:21
  The administrator has disabled public write access. Please, register to participate in the forum.
Raúl
Moderator

Moderator
Posts: 444
graph
Karma: 6  
Re:Duda recibiendo el estado de un servicio - 2008/08/18 08:38 De nada Me alegro de que al final te funcione..
A veces es dificil aclararse con tanto servicio, operación, suscripción, etc. Suele ayudar tener una descripción gráfica de la relación entre tus servicios y los mensajes principales, porque cuando tienes muchos servicios y relaciones complejas es facil equivocarse...
Raúl Arrabales Moreno. conscious-robots.com/raul
  The administrator has disabled public write access. Please, register to participate in the forum.
Syndicate
 Conscious Robots RSS FeedConscious Robots RSS Feed





Lost Password?
No account yet? Register
Last Posts in Forum
 
Top! Top!