logo logo
Home arrow Forums...
Friday, 18 May 2012
 
 
 
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: 591
graph
Karma: 10  
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: 591
graph
Karma: 10  
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.





Lost Password?
No account yet? Register
 Conscious Robots RSS FeedConscious Robots RSS Feed

Find us on Facebook

Follow us on TwitterFollow us on twitter
Spotlight

Machine Consciousness Bibliography Database

 

ConsScale
The Cognitive Machine Consciousness Scale

 
Last Posts in Forum
 
CR
miel continental