
Problem with returning the value to the pb-client using interaction... the code will print out the "Nextid is (number)" on the server but it wont return the value to the client.
/Fredrik
from twisted.enterprise import adbapi from twisted.spread import pb from twisted.internet import app
def getNextId(conn, tableName): sql = """SELECT NextId FROM DbSequence where SeqName = '%s' """%(tableName) print sql conn.execute(sql) return conn.fetchall()
class DefinedError(pb.Error): pass
class SimplePerspective(pb.Perspective): db = adbapi.ConnectionPool("MySQLdb", db='dbname', user="root")
def perspective_echo(self, tableName): print 'echoing',tableName return self.db.interaction(getNextId,self.gotNextId,None,tableName)
# _^_ # this dont return any value to the client
def perspective_error(self): raise DefinedError("exception!")
def gotNextId(self,resultlist): nextid = resultlist[0][0] print "next id is %d ." % (nextid) return nextid
class SimpleService(pb.Service): def getPerspectiveNamed(self, name): p = SimplePerspective(name) p.setService(self) return p
if __name__ == '__main__': import pbecho appl = app.Application("pbecho") pbecho.SimpleService("pbecho",appl).getPerspectiveNamed("guest").makeIdentity("guest") appl.listenTCP(pb.portno, pb.BrokerFactory(pb.AuthRoot(appl))) appl.run() #appl.save("start")