[AG-TECH] Struggling with starting of producer service and encapsulated executable

Brian Corrie bcorrie at sfu.ca
Thu May 6 15:20:20 CDT 2004


Hi Ivan, Michael,

We have gone down this path as well, but have had a bit more success 
with the NodeService side of things. There are really two issues here. 
One is getting the node service to work. The other is on which way to 
integrate the application...

Integrating Node Services:

We have a very early alpha visualization service integrated into AG as a 
NodeService. We do not use the streamDescription.location.host and port 
in our service. I have not found a way of actually assigning any info to 
the streamDescription though. For the service we use we are currently 
using the service configuration stuff to manage this. This is a hack for 
now until we can find another mechanism to configure the stream 
description directly... I haven't experimented with that alot.

One question I have for you is what capabilities does your service use. 
I was unable to get our service to work unless I used 
Capability.PRODUCER and Capability.VIDEO (AUDIO would probably work as 
well). Capability.TEXT did not work and I didn't see an easy way to use 
anything else cleanly in the same model... So again, a hack to make it 
work was to use VIDEO and PRODUCER.

You have to create a zip file and a service description file (svc file) 
and stick them in the C:\Documents and Settings\All Users\Application 
Data\AccessGrid\services folder (on Windows of course). Once I did, this 
appears in my list of services in the NodeManager, I can add it, and 
when I change venues my visualization application starts up with the 
correct connection information... Unfortunately the connection info is 
not communicated as part of the stream description...

WRT node services this raises a question in my mind as to what it means 
to be a producer and a consumer in the AG model. Ivan (or anyone else) 
can you comment? I would have thought that a producer would create a 
stream if it did not already exist and if it already existed it would do 
nothing. It also seems to make sense that a consumer would only start up 
if the appropriate stream existed and it would not if there were no 
producers in the environment. This does not seem to be the case at the 
moment.

This is the model that I would have liked for our service and I think 
what Michael was leaning toward. My node creates a VizProducerService. 
This checks to see if a stream exists of this type (Capability.VIZ). If 
not it creates a stream with the correct info. In the video case this 
would be the assignment of a stream with a multicast address. In a 
client server model it might create a stream that was a unicast address 
to connect to. In the client server model it probably only makes sense 
to have one Producer. When a consumer joins it checks to see if a stream 
of the correct type exists and if so it joins it. The stream info tells 
it how to connect to the server...

This is kind of what I thought the model was for Node Services. I don't 
think this is correct but I am not sure.

There are some problems with this model of course, which brings us to 
the second part of the question:

How to integrate applications:

The problem with the above model is that my visualization application 
starts up whenever I enter a venue (any venue). What I really want is to 
be able to associate a visualization application with a specific venue. 
This is what the Shared Application model that Ivan talked about does 
for you. Michael, I think we are doing exactly the same thing that you 
are. Trying to determine how best to integrate applications into AG 
(NodeService versus SharedApp). I am currently working on the same 
visualization service but instead works under the SharedApp model. This 
is fairly nice from what I can tell, as you can publish information into 
the venue and other clients can consume that information (connection 
info, etc). In the AG 2.2 code there is a VNC client/server Shared App 
that is very good for basing such an App on (we are having some problems 
with AG2.2 - anyone else been brave and able to get AG 2.2 alpha up and 
running?). I don't have this working yet, but hopefully once we get AG 
2.2 up and running we will have some success...

The problem with this model is that I would like to have the shared 
application start up automatically when a venue is entered (like audio 
and video). Ultimately it would be preferable to have the option to 
either start automatically or have to start it directly (both are 
important)... Is there a way to do that with SharedApps?

Best of luck getting the node service going... If you have more 
questions give me a shout.

Cheers,

Brian






Michael Braitmaier wrote:

> In fact we aim for integrating VR-collaboration into AccessGrid. At the 
> moment I am evaluating the different methods for integration. We already 
> did a small shared application coupling the UI part of the VR-controll 
> software with AccessGrid. Adiditionally I am working on a method of 
> allowing our render software to have a connection to access grid. As I 
> said this just experimental at the moment. But I think it might be a 
> good idea to consider our VR-rendering software as a kind of a 
> capability of a node, or in more detail have some kind of daemon or 
> server which provides a interface to the VR environment for other access 
> grid participants. This server would then also only be started if you 
> enter a venue or leave it, providing a continues stream of 3D data. 
> Initially I first want to check out the complexity of integration of our 
> application as a service before I decide on one way of implementation. 
> Therefore I wrote a small client server app just sending information 
> using sockets. I now want to incorporate this app into a producer 
> service python script so there is alaways a server app running on the 
> node and of course get a client instance of the app running when 
> entering a venu on the server.
> But as described I still struggle with invoking my server app. 
> Furthermore I don' t  know at which point to integrate the client side 
> application call.
> 
> Thanks
> Michael
> 
> Ivan R. Judson wrote:
> 
>> Hi Michael,
>>
>> I'm sorry I haven't replied to your email yet, can you tell me what the
>> application you are trying to incorporate does? It might be better
>> integrated as a shared application rather than a node service, the
>> difference being that shared applications are what users interact 
>> with, like
>> a shared editor or shared rasmol application, whereas a node service is
>> providing some underlying capability, like shared video or shared audio.
>> Once configured the users doesn't start and stop the node services
>> typically, there are automatically started and stopped when they enter a
>> venue.
>>
>> I hope that helps a bit, please let me know what I can do to help.
>>
>> --Ivan
>>  
>>
>>> -----Original Message-----
>>> From: owner-ag-tech at mcs.anl.gov [mailto:owner-ag-tech at mcs.anl.gov] On 
>>> Behalf Of Michael Braitmaier
>>> Sent: Thursday, May 06, 2004 5:09 AM
>>> To: ag-tech at mcs.anl.gov
>>> Subject: [AG-TECH] Struggling with starting of producer service and 
>>> encapsulated executable
>>>
>>> Currently I am trying to incorporate a simple executeable into my 
>>> VideoProducerService-derived own ProducerService., but I can't figure 
>>> out some aspects of how the producer service works.
>>> Especially I am stuck with the start method of the service. As far as 
>>> I understand it, for example the Videoproducer service does nothing 
>>> more than calling vis with appropriate parameters passed in the 
>>> options array. Therefore I wanted to replace vic by my own 
>>> executeable and accordingly change the options passed to the called 
>>> AGService._Start method. But when I remove the options 
>>> self.streamDescription.location.host and 
>>> self.streamDescription.location.port my producer service can't be 
>>> added to my service manager because the service manager reports that 
>>> the service is unreachable. I thought these values are only needed 
>>> for vic to be able to broadcast its video stream and receive video 
>>> streams, so I should be able to pass my own server information format 
>>> at this point which is understandable by my executeable. So what do I 
>>> have to pay attention to when replacing vic with my own executeable 
>>> concerning the start method of the producer service, to avoid my 
>>> service being unreachable ?
>>>
>>> Any help would be greatly appreciated.
>>> Michael
>>>
>>> -- 
>>> Michael Braitmaier
>>> HLRS
>>> University of Stuttgart
>>> Germany
>>>
>>>
>>>
>>>   
>>
>>
>>
>>  
>>
> 
> 




More information about the ag-tech mailing list