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 )