#!/usr/bin/env python # Copyright (c) Twisted Matrix Laboratories. # See LICENSE for details. from __future__ import print_function from zope.interface import implementer from twisted.spread import pb from twisted.cred import checkers, portal from twisted.internet import reactor class MyPerspective(pb.Avatar): def __init__(self, name): self.name = name def perspective_foo(self, arg): print("I am", self.name, "perspective_foo(",arg,") called on", self) @implementer(portal.IRealm) class MyRealm: def requestAvatar(self, avatarId, mind, *interfaces): if pb.IPerspective not in interfaces: raise NotImplementedError return pb.IPerspective, MyPerspective(avatarId), lambda:None p = portal.Portal(MyRealm()) p.registerChecker( checkers.InMemoryUsernamePasswordDatabaseDontUse(user1="pass1")) reactor.listenTCP(8800, pb.PBServerFactory(p)) reactor.run()