def main(self): self.commCondition.acquire() while self.switch: if len( self.packQueue ) <= 0: self.commCondition.wait() ( pid, code, package ) = self.packQueue.pop() Logger.info('received head from %s : [%d, %2x]' % ( self.address, pid, code ) ) Logger.debug('received package from %s : '%self.address, package) #检查权限 if not self.packager.codeAuthorized( code, self.myAuth ): Logger.warning( '%s do not allow to response the package %d'%( self.address, code ) ) continue #解析包 data = self.packager.parsePackage( self.mainThreadName, code, package ) packInfo = self.packager.codeFindPackage( code ) #发送回应包 if packInfo['ExistReply'] == 1: respPackage = self.packager.genPackage( self.mainThreadName, 'Response', pid ) self.send( 'Response', respPackage ) func = getattr( self, packInfo['Name'] ) unitNum = packInfo['StructLabel'].split( ',' ).__len__() data = [data[i : i + unitNum] for i in range( 0, len( data ), unitNum )] func( data ) self.commCondition.release()
def recv(self): sourceStream = '' while self.switch: recvStream = self.sock.recv( 1000 ) Logger.debug( 'receive raw stream from Server : ', recvStream ) if recvStream: sourceStream = self.parseHeader( '%s%s' % ( sourceStream, recvStream ) ) else: Logger.error( 'disconnect!' ) DB.stop() self.sock.shutdown( socket.SHUT_RDWR ) self.sock.close() self.switch = False
def receive(self): try: sourceStream = "" while self.switch: Logger.debug("%s receiving..." % self.address) recvStream = self.sock.recv(1000) Logger.debug("receive raw stream from %s : " % self.address, recvStream) if recvStream: self.isAlive = True sourceStream = self.parseHeader("%s%s" % (sourceStream, recvStream)) elif self.switch == True: Logger.info("%s disconnect..." % self.address) self.shutdown() except: Logger.error("%s receive error : \n%s" % (self.address, format_exc())) self.shutdown()
def send(self, stream): Logger.debug("%s send raw stream : " % self.address, stream) self.sock.sendall(stream)
def Response(self, data): Logger.debug( 'receive response!' )
def send(self, data): Logger.debug( 'send raw stream:', data ) self.sock.sendall( data )