logo logo
Inicio arrow Foros...
Tuesday, 18 de November de 2008
 
 
English English  Español Español  
Próximos Eventos
10.Jun. 2009

IWANN 2009
Salamanca, Spain
International Work-Conference on Artificial Neural Networks
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
Work-Conference in the Interplay between Natural and Artificial Computation
Etiquetas
Análisis Artificial Associations Científicos Conciencia Consciencia Consciencia Artificial Conscientes Consciousness Howto Investigación Investigadores Microsoft Máquinas Publicaciones Researchers Reviews Robot Robotics Robots Servicios Studio artificial conciencia
Destacados
Titulares RSS
 Conscious Robots RSS FeedFuente RSS de Conscious Robots
Conscious-Robots.com Forum  


sutaro
Usuarios

Gold Boarder
Mensajes: 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
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
Raúl
Moderador

Moderador
Mensajes: 424
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
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
sutaro
Usuarios

Gold Boarder
Mensajes: 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
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.
Raúl
Moderador

Moderador
Mensajes: 424
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
  El administrador ha deshabilitado la escritura de mensajes a los usuarios no registrados.





¿Recuperar contraseña?
¿Quieres registrarte? Hazlo aquí
Mensajes en el Foro
 
Top! Top!