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

Michael Braitmaier braitmaier at hlrs.de
Fri May 7 07:20:50 CDT 2004


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.
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?

Thanks again
Michael


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
>>>>
>>>>
>>>>
>>>>   
>>>
>>>
>>>
>>>
>>>  
>>>
>>
>>
>
>


-- 
Michael Braitmaier
HLRS
University of Stuttgart
Germany





More information about the ag-tech mailing list