def main(nodeName, server=False): cookie = readCookie() nodeName = buildNodeName(nodeName) process = Process(nodeName, cookie) process.registerModule("api", RemoteCalls(process)) if server: process.listen().addCallback(lambda x: testReceive(process)) else: testPing(process) reactor.run()
def test_spawn(self): """ Spawn a process on the erlang side, send data from python, and receive data after. """ d = Deferred() class TestProcess(SpawnProcess): def start(oself, pid, *args): oself.send(pid, Tuple(["ok", "connect"])) oself.receive().chainDeferred(d) class RemoteCalls(object): test = TestProcess process = Process(self.nodeName, self.cookie) process.registerModule("api", RemoteCalls()) def spawn(ignore): self.protocol.transport.write( "Pid = spawn(%s, api, test, []).\n" % self.nodeName) self.protocol.transport.write( "receive Msg -> io:format(\"**~p**~n\", [Msg]) end.\n") self.protocol.transport.write( "Pid ! {self(), \"ok\", \"disconnect\"}.\n") return d def check(result): self.assertIn("**{\"ok\",\"connect\"}**", self.protocol.data[1]) self.assertEqual("ok", "".join(map(chr, result[1]))) self.assertEqual("disconnect", "".join(map(chr, result[2]))) return process.stop() d.addCallback(check) return process.listen().addCallback(spawn)
# do something interesting print "user %s available"%(l2u(jid[1])) return Atom("ok") def remote_set_presence(self, user, server, resource, p): pprint(p) print "new presence: %s %s %s"%(l2u(user), l2u(server), l2u(resource)) print to_domish(p).toXml() return Atom("ok") def remote_receive_packet(self, jid, frm, to, packet): print ">>", to_domish(packet).toXml() def remote_send_packet(self, frm, to, packet): print "<<", to_domish(packet).toXml() if __name__ == "__main__": cookie = readCookie() nodeName = "*****@*****.**" process1 = Process(nodeName, cookie, "olindo.bluendo.priv") reactor.callWhenRunning(register_hook, process1) nodeName = "*****@*****.**" process2 = Process(nodeName, cookie, "olindo.bluendo.priv") process2.registerModule("proxy", UserMonitor()) process2.listen() reactor.run()