Update

Ok. I've got the SWIG headers importing in. So far I've got all of user_ops, msgbase , and, um, something else , exposed to python. The Swig headers *DO* generate alot of warnings however. Which is irritating. Might be some sort of GCC options to supress them.

I'm trying to figure out how to invoke the python interactive interpreter from *within* the server, for the purpose of exploring the SWIG headers and documenting them, so I can then create higher level classes
the idea being is we can then do operations like;-

import citadel

user = citadel.user("shayne")
user.password = "bongoxxx123rara"
user.save()

or

room = citadel.room("lobby")
room.defaultview = cit_calendar
room.save()

or heck for something randomly pragmatic...

def clone_user(templateuser,newuser):
      user = citadel.user(templateuser)
      user2 = user.copy() #or whatever the clone thing is. Pass by ref remember!
      user2.name=newuser
      user2.update()
      return 1

citadel.addcommand ('CLUS','userfunctions.py','clone_user')

etc...

I actually almost got idle spawned from inside citadel (the tk gui IDE)!!!!! Barfed on a threading issue. Was worth a try.  Not going to pursue it, as its more just a neat hack than anything useful.

Now.. onto other matter of threading. How does citadel's theading work. I've noticed that (predictably), if I start a long running script from one connection, then try and start python from another connection, the server barfs on a threading gotchya. Aparently theres some "great big lock" thingo in the interpreter that can be grabbed and/or inspected, and I need to work out a strategy for making this thread safe. ....might just be a big monsterised lock.

Reply via email to