[Twisted-Python] Not understanding buildProtocol(), any clarification?
Hello, I'm trying to understand and use buildProtocol(), which isn't working as I expected, in two ways :) Question 1. If I have, on the Server side: class MyFactory(Factory): protocol = MyTestProtocol def buildProtocol(self, addr): p = Factory.buildProtocol(self, addr) p.transport.write('connected.\n') return p Should this work? Would the write() function execute? I thought that 'p' was a fully usable Protocol object at that point, but Python disagrees with me :) Tells me it's a 'Nonetype' with no write() method. If I take out the write(), everything works fine, I can communicate between client/server, so no problems in the rest of the code. Question 2. If I use buildProtocol() on the Server side to *not* make a connection, as: class MyFactory(Factory): protocol = MyTestProtocol def buildProtocol(self, addr): if (some condition): return Factory.buildProtocol(self, addr) else: return None What is supposed to happen on the Client Side when I return None? I was thinking that my factory's clientConnectionFailed() would fire, indicating that the Server refused a connection. Instead, what I get is my Client's connectionMade() firing, immediately followed by a clientConnectionLost() firing, as if the connection was made then dropped. Just to check, I changed it to: buildProtocol(self, addr): return None which behaved the same way on the Client side. So what is really happening in buildProtocol? Is it making a connection to the Client side, and firing connectionMade(), no matter what? Or is something else going that I don't understand :) Thanks in advance for any clarification. John C>
participants (1)
-
John Crawford