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-t...@mcs.anl.gov [mailto:owner-ag-t...@mcs.anl.gov] >>>> On Behalf Of Michael Braitmaier >>>> Sent: Thursday, May 06, 2004 5:09 AM >>>> To: ag-t...@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