/media/sda5/docs/coding/python/pygame/RPG/Client/source 1.1/clientProtocol.py

Go to the documentation of this file.
00001 from twisted.internet.protocol import Protocol, ClientFactory
00002 from twisted.internet import gtk2reactor
00003 gtk2reactor.install()
00004 from twisted.internet import reactor, defer
00005 from clientVars import *
00006 from Messages import Messages
00007 from urllib import quote_plus, unquote_plus
00008 from Users import Users, User
00009 
00010 class clientProtocol(Protocol):
00011         
00012         def connectionMade(self):
00013                 self.factory.log.log("You are connected to the server!\n")
00014                 self.initinit = True
00015                 self.messagemessage = 0;
00016                 d = self.sendMessagessendMessages();
00017                 d.addCallback(self.sendMessagessendMessages);
00018                 
00019         def dataReceived(self, data):
00020                 if self.initinit:
00021                         self.factory.log.log("********** SERVER MESSAGE **********")
00022                         block = data.split("\r\n\r\n")
00023                         welcome = block[0]
00024                         self.factory.log.log(welcome)
00025                         
00026                         connData = block[1]
00027                         connData = connData.split("\r\n");
00028                         for lines in connData:
00029                                 if lines[0:3] == "UID":
00030                                         params = lines.split(" ")
00031                                         self.factory.Users.usersEver = params[2]
00032                                         self.factory.Users.usersOnline = params[3]
00033                                         self.factory.Users.addUser(params[1], self.factory.alias)
00034                         self.factory.log.log("There are currently " + params[3] + " users online. This server had " + params[2] + " logins\n")
00035                         self.factory.log.log("********** JOINING CHAT **********")
00036                         self.sendMsgsendMsg("USER "  + self.factory.alias)
00037                         self.initinit = False
00038                 else:
00039                         if data[0:7] == "USER OK":
00040                                 self.factory.log.log("You've succesfully authenticated yourself on the server\n")
00041                                 self.sendMsgsendMsg("JOIN CHAT")
00042                         elif data[0:9] == "JOIN CHAT":
00043                                 block = data.split("\r\n\r\n")
00044                                 params = block[0].split(" ")
00045                                 try:
00046                                         ID = params[3]
00047                                 except:
00048                                         self.factory.log.log("You've joined the chat as " + self.factory.alias + "\n")
00049                                         return
00050                                 try:
00051                                         name = params[4]
00052                                         name = name.split("\n")
00053                                         self.factory.log.log(name[0] + " joined the chat!\n" )
00054                                         if name[0] == self.factory.alias:
00055                                                 self.sendMsgsendMsg("USERLIST")
00056                                 except:
00057                                         name[0]= "NameNotSet";  
00058                                 self.factory.Users.addUser(ID, name[0], True)
00059                                 
00060                         elif data[0:8] == "CONN UID":
00061                                 params = data.split(" ")
00062                         elif data[0:13] == "MSG CHAT UID ":
00063                                 block = data.split("\r\n\r\n")
00064                                 params = block[0].split(" ")
00065                                 msg = params[4].split("\r\n");
00066                                 msg = msg[0]
00067                                 self.factory.log.log(self.factory.Users.getName(params[3]) + " >>> " + unquote_plus(msg) )
00068                         else:
00069                                 self.factory.log.log("[" + str(self.factory.pid) + "] " +data)
00070 
00071         def sendMessages(self):
00072                 d= defer.Deferred()
00073                 msglen = len(self.factory.messages.messages);
00074                 if msglen != self.messagemessage:
00075                         while self.messagemessage != msglen:
00076                                 self.sendMsgsendMsg("MSG CHAT " + quote_plus(self.factory.messages.messages[self.messagemessage]))
00077                                 self.messagemessage = self.messagemessage + 1
00078                         d.callback("SEND MESSAGES")
00079                 reactor.callLater(2, self.sendMessagessendMessages);
00080                 return d;
00081                 
00082         def sendMsg(self, msg):
00083                 self.factory.pid += 1
00084                 #self.factory.log.log("[" + str(self.factory.pid) + "] " + msg)
00085                 self.transport.write(msg + "\r\n\r\n")
00086                 
00087 class clientProtocolFactory(ClientFactory):
00088         
00089         protocol = clientProtocol
00090         
00091         def __init__(self, log, alias, msgObject):
00092                 self.loglog = log
00093                 self.messagesmessages = msgObject
00094                 self.aliasalias = alias
00095                 self.pidpid = 1
00096                 self.UsersUsers = Users();
00097                 self.UsersUsers.addUser("1", alias);
00098         
00099         def clientConnectionFailed(self, reason, bla):
00100                 self.loglog.log("Couldn't connect...\n")
00101 
00102 def runReactor(host, port, log, alias, msgObject):      
00103         f = clientProtocolFactory(log, alias, msgObject)
00104         reactor.connectTCP(host, port, f)
00105         reactor.run()
00106 
00107 def stopReactor():
00108         reactor.stop()
00109         

Generated on Mon Oct 8 05:43:00 2007 for Python Game and Chat Client by  doxygen 1.5.1