#! /usr/bin/python

import sys
from twisted.internet import reactor
from foolscap.api import RemoteCopy, Tub

# the receiving side defines the RemoteCopy
class RemoteUserRecord(RemoteCopy):
    copytype = "unique-string-UserRecord" # this matches the sender

    def __init__(self):
        # note: our __init__ must take no arguments
        pass

    def setCopyableState(self, d):
        self.name = d['name']
        self.age = d['age']
        self.shoe_size = "they wouldn't tell us"

    def display(self):
        print "Name:", self.name
        print "Age:", self.age
        print "Shoe Size:", self.shoe_size

def getRecord(rref, name):
    d = rref.callRemote("getuser", name=name)
    def _gotRecord(r):
        # r is an instance of RemoteUserRecord
        r.display()
        reactor.stop()
    d.addCallback(_gotRecord)


from foolscap.api import Tub
tub = Tub()
tub.startService()

d = tub.getReference(sys.argv[1])
d.addCallback(getRecord, "alice")

reactor.run()
