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

Brian Corrie bcorrie at sfu.ca
Fri May 7 12:19:06 CDT 2004


Hi Michael,

Michael Braitmaier wrote:
> Hello Brian!
> 
> Thanks so far for the information. At least I got it working so my small 
> app is called from within the producer service. Addditionally now wrote 
> a consumer service. My main problem now is how to get these two services 
> set up correctly. Up to now I still only integrated the producer service 
> into the node services associated with a venue client. Its still unclear 
> to me how I can tell the venue server to load my producer service, so 
> when I connect with a venue client to the ag node running the venue 
> server, I get a. connection betwen the app of the consumer service and 
> the app of the producer service.

Ideally I think what you want to be able to do here (at least what we 
would like to do here) is to be able to have the producer configure the 
"StreamDescription" that is being used for that stream. There may be a 
way to do that but I haven't figured it out yet. Thus when the producer 
would start it would configure the stream appropriately. When the 
consumer starts it just looks at the stream and connects based on the 
information in that stream.

The way we get around this is to set the host configuration info as a 
service parameter that you can change when the node service is loaded or 
configured. Of course, this is not satisfactory (AKA a hack) because 
this has to be done manually...

It is also worth noting that this mechanism does not associate the 
services with particular venues. Thus whenever you enter a venue on the 
machine that has these services installed you will get the applications 
appearing. What we want to be able to do is to associate this with a 
specific venue so that the service only starts up in that venue. This is 
what the Shared App model gives you. Unfortunately there is no producer 
consumer model in the shared app framework so a client/server type of 
model doesn't seem to fit all that well.

I have been looking at the RasMol shared app (see the AG Wiki) and it 
uses the Venue infrastructure in some interesting ways. There are lots 
of things you can do in the AG environment, the big problem is figuring 
out what capabilities are available. The RasMol app was written by Bob 
Olson and Tom Uram, the AG developers. They know what the useful hooks 
are so it is a good place to look for those that are working on shared 
apps 8-)

> I can confirm that using TEXT as role for services does't work the way I 
> would have expected. Though the service is started, the application 
> belonging to the service is not. If I change the role to VIDEO, it works 
> fine. Generally I wonder what influence the role parameter of the 
> capapilities class has, besides restricting call of executeables?

I am not sure on that one. My inclination is that it specifies the type 
of stream that is created. It may be that audio and video are special in 
some way so that their streams are created auto-magically in each venue. 
There may be something one has to do to create a TEXT stream for 
example???  Without the stream creation the application would probably 
not start... Any comments from the AG team?

Cheers,

Brian

> Brian Corrie wrote:
> 
>> 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