[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [AG-TECH] GetData() problem in wxPython shared application



First, a note: if a non-existent key is passed to GetData, an empty string is returned. This causes variation in the evaluations that you did (len(d)>0 is false; d!=0 and d!=None are true). You might instead simply use 'if d:'. Initialization should not have any effect. I'm curious about the junk you got back.

As to your question: The application session in the venue doesn't clear out data when the last client leaves and, currently at least, can't be made to do so without some server side modifications. A client could check to see if it is the last or first to join (using the GetParticipants call) and zero out the data; not exactly a great solution, but one that would work. Also, there is not currently a method for removing data, so you can only zero it out.

Tom


Stephen Jeffrey wrote:
Thanks Susanne. If I initialise the variable before
calling GetData(), and then test using

if self.file:

it seems to work OK.

I now have another problem - the data does not get deleted
from the application service when all copies of the application
are terminated. The very first time the application is started,
it reports there is no data stored, as it should. However if
I terminate the application and then restart it, it reports
that there is existing data. The only way to delete the data
appears to be to delete the shared app from the venue client
window, and then add the shared app again (using the Start
Application Session option under the Venue menu in the venue
client window). Is this normal behaviour, or do I have to
somehow manually delete the data when the application terminates?

cheers
steve


Susanne Lefvert wrote:

This works for me:

-----------------------
self.file = None

# Get current state
self.file = self.sharedAppClient.GetData("file")

if self.file:
    # do stuff
else:
    print "data does not exist..."
------------------------

Which platform?

Susanne


On Wed, 13 Apr 2005, Stephen Jeffrey wrote:


Hi All,

I am writing a shared application using wxPython. The application
is to query if there is any shared data present when it starts.
ie. if another copy of the application is already running and has
sent some data using sharedAppClient.SetData(), when the second
copy of the application starts it should obtain the data stored
by the first copy.

How can I query if there is any shared data already present?
I have tried:

d = self.sharedAppClient.GetData("data")
if len(d) > 0:

and other variations such as:

d = self.sharedAppClient.GetData("data")
if d != 0:

and

d = self.sharedAppClient.GetData("data")
if d != None:

but it appears as though GetData() is returning junk - when the
first copy of the application starts there should not be
any shared data present, but it returns non-zero data.

Is there some way to overcome this, or do I have to somehow
get the first instance of the application to "initialise"
the shared data.

cheers
steve

--
Dr Stephen Jeffrey
Advanced Computational Modelling Centre
University of Queensland
St. Lucia Queensland 4072 Australia

Phone: +61 (7) 3365 6130
Fax: +61 (7) 3365 6136
Email: sjj@maths.uq.edu.au
Web: http://www.acmc.uq.edu.au