def chat(self,msg): #if self.login : msgBody=self.msg.getValue(msg,'Body') msgCreated=int(time.time()) msgRecvGuid=self.msg.getValue(msg,'RecvGuid') msgSendGuid=self.msg.getValue(msg,'SendGuid') blacklist=self.mysql.getBlackList(msgRecvGuid) if msgSendGuid not in blacklist: arg=('CHAT',msgBody,msgCreated,msgSendGuid,msgRecvGuid) msg=self.msg.packMsg(*arg) receiver=self.factory.getClient(msgRecvGuid) if not receiver: logger.debug("User {!s} if offline,write the msg to mysql".format(msgRecvGuid)) arg=('CHAT',msgBody,msgCreated,msgSendGuid,msgRecvGuid,self.mysql) setOffLineMsg(*arg) #T=setOffLineMsg(*arg) #T.setDaemon(True) #T.start() return logger.debug("Sending msgs to user {!s}".format(msgRecvGuid)) receiver.transport.write(msg) else: logger.debug("you are in receiver's blacklist,so sorry...") logger.debug("Writing msgs to database...") arg=('CHAT',msgBody,msgCreated,msgSendGuid,msgRecvGuid,self.mysql) try: setOnLineMsg(*arg) except _mysql_exceptions.ProgrammingError: logger.error("Insert error")
def register(self,msg): self.guid=self.msg.getValue(msg,'OwnGuid') ''' register user ''' logger.debug("Register user {!s}...".format(self.guid)) self.factory.addClient(self.guid,self) logger.debug("Done") if isinstance(self.mysql,MySql): ''' send online msg ''' self.factory.sendNotify(self.guid,self.mysql,'ONLINE_NOTIFY') ''' check offline msg ''' try: msgs=self.mysql.getOffLineMsg(self.guid) except _mysql_exceptions.ProgrammingError as error: logger.error(error) logger.error("{}".format(traceback.format_exc())) return if not msgs: logger.debug("User {!s} has no offline msgs".format(self.guid)) else: logger.debug(msgs) for _msg in msgs: arg=('OFFLINE_MSG',_msg[1],_msg[2],_msg[3],_msg[4]) message=self.msg.packMsg(*arg) logger.debug("Sending offline msgs : {!s}".format(message)) self.transport.write(message) logger.debug("Insert offline msgs to online msg...") arg=(_msg[0],_msg[1],_msg[2],_msg[3],_msg[4],self.mysql) try: setOnLineMsg(*arg) except _mysql_exceptions.ProgrammingError: logger.error("Insert error") except UnicodeDecodeError as error: logger.error(error) self.mysql.delOffLineMsg(_msg[5]) ''' register in database ''' self.mysql.setOnLineUser(self.guid) ''' send online msg ''' else: ''' database init failed ''' pass