def jsonReceived(self, jsonObj): self.logMsg("odebralem obiekt json") msgType = jsonObj['TYPE'] if msgType == "HII" and ( self.state == WAIT_FOR_HII_OR_P2P or self.state == WAIT_FOR_HII): appVar.coreInstance.handleHiiMessage(jsonObj, self) self.state = WAIT_FOR_MTX elif msgType == "P2P" and self.state == WAIT_FOR_HII_OR_P2P: # otrzymalismy P2P wiec przedstawiamy sie i oczekujemy na LOG msgToSend = MessageParser.getFullHiiMsg() self.logMsg("wysyłam wiadomosc i czekam na log msg : '%s'" % msgToSend) self.sendPacket(msgToSend) self.state = WAIT_FOR_LOG elif msgType == "LOG" :#TODO: mozliwy forward wiadomosci!!! if appVar.coreInstance.handleLogMessage(jsonObj, self): self.state = CONNECTED else: self.logMsg("odrzucono logowanie - przerywam polaczenie") self.transport.loseConnection() elif msgType == 'MTX': appVar.coreInstance.handleMtxMessage(jsonObj) self.state = CONNECTED elif msgType == 'MSG': appVar.coreInstance.handleMsgMessage(jsonObj) elif msgType == 'OUT': appVar.coreInstance.handleOutMessage(jsonObj) elif msgType == 'LIV': appVar.coreInstance.handleLivMessage(jsonObj) else: self.logMsg("bledny typ wiadomosci '%s' w stanie %d" % (msgType, self.state)) self.state = DISCONNECTED self.transport.loseConnection()
def connectionMade(self): self.logMsg("nowe polaczenie") self.transport.setTcpNoDelay(True) if self.state == INIT: appVar.tcpManager.newConnection(self) if self.isClient and self.isReversed == False: # to my utworzylismy polaczenie wiec wysylamy hii msg i czekamy na log self.state = WAIT_FOR_LOG msgToSend = MessageParser.getFullHiiMsg() self.logMsg("wysyłam wiadomosc i czekam na log msg : '%s'" % msgToSend) self.sendPacket(msgToSend) elif self.isClient and self.isReversed: # to my utworzylismy polaczenie wiec wysylamy P2P i czekamy na HII msg self.logMsg("czekam na znacznik %s") self.sendPacket(MessageParser.getFullP2pMsg()) self.state = WAIT_FOR_HII else: # ktos do nas sie podlaczyl wiec poprostu czekamy na HII lub P2P self.logMsg("czekam na hii/multitalk message") self.state = WAIT_FOR_HII_OR_P2P else: self.logMsg("bledny stan protokolu") assert(False)
def lineReceived(self, line): #self.logMsg("otrzymałem linie tekstu") if self.state == WAIT_FOR_HII_OR_P2P and line == MULTITALK_TAG: #ktos podlaczyl sie do nas podajac z palca IP wiec wysylamy mu HII i oczekujemy na LOG msgToSend = MessageParser.getFullHiiMsg() self.logMsg("wysylam hi msg '%s'" % msgToSend) self.sendPacket(msgToSend) self.state = WAIT_FOR_LOG return elif self.state == WAIT_FOR_HII_OR_P2P: self.logMsg("niedopasowalem znacznika %s wiec oczekuja ze otrzymam HII" % MULTITALK_TAG) len = MessageParser.getMessageLen(line) if len: #self.logMsg("otrzymalem naglowek - czekam na odczyt %d bajtow" % len) self.packetSize = len self.toRead = len #teraz chcemy odczytać wnętrze pakietu self.packet = "" self.setRawMode() else: #self.logMsg("przerywam polaczenie - bledy poczatek pakietu: '%s'" % line) #self.transport.loseConnection() self.logMsg("bledy poczatek pakietu - ignoruje go: '%s'" % line)