All pastes #460799 Raw Edit

Cody Brocious

public python v1 · immutable
#460799 ·published 2007-04-27 09:06 UTC
rendered paste body
#!/usr/bin/env python# encoding: utf-8"""AsyncObject.pyCreated by Cody Brocious on 2007-04-26.Copyright (c) 2007 Cody Brocious All rights reserved."""import os, socket, struct, systry:    import cPickle as pickleexcept:    import pickleimport AsyncProxyclass AsyncObject(object):    @classmethod    def new(cls, *args, **kwargs):        sock = socket.socketpair()[1]        proxy = AsyncProxy.AsyncProxy(sock)        if os.fork() == 0:            self = cls(*args, **kwargs)            self.run(sock, proxy)            sys.exit(0)        else:            return proxy        def run(self, sock, proxy):        while True:            data = sock.recv(4)            if len(data) != 4:                break                        datalen = struct.unpack('L', data)[0]            data = sock.recv(datalen)                        func, args, kwargs, callback = pickle.loads(data)                        if func == 'get' or func == 'new':                continue                        func = getattr(self, func)                        ret = func(*args, **kwargs)                        if callback != None:                getattr(proxy, callback)(ret, callback=None)