Changeset 80


Ignore:
Timestamp:
07/01/10 11:10:31 (11 years ago)
Author:
sc
Message:

network_server_thinkgear:

  • deletion of disconnected sockets fixed
File:
1 edited

Legend:

Unmodified
Added
Removed
  • remote_control/puzzlebox_brainstorms_network_server_thinkgear.py

    r79 r80  
    146146        def timerEvent(self): 
    147147                 
    148                 if self.DEBUG: 
    149                         print "timerEvent called" 
    150                  
    151148                if (self.connections != []): 
    152149                         
     
    188185        ################################################################## 
    189186         
     187        #def getNextConnectionIndex(self): 
     188                 
     189                #index = len(self.connections.keys()) 
     190                 
     191                #while index in self.connection.keys(): 
     192                        #index += 1 
     193                 
     194                 
     195                #return(index) 
     196         
     197         
     198        ################################################################## 
     199         
     200        def deleteDisconnected(self): 
     201                 
     202                connection_index = 0 
     203                 
     204                for connection in self.connections: 
     205                         
     206                        if self.DEBUG: 
     207                                print "Connection state:", 
     208                                print connection.state() 
     209                         
     210                        if ((connection.state() != QtNetwork.QAbstractSocket.ConnectingState) and \ 
     211                                 (connection.state() != QtNetwork.QAbstractSocket.ConnectedState)): 
     212                                 
     213                                if self.DEBUG: 
     214                                        print "x-- [%s] Deleting disconnected socket:" % self.socket.name, 
     215                                 
     216                                connection.deleteLater() 
     217                                # Delete references to disconnected sockets 
     218                                del (self.connections[connection_index]) 
     219                         
     220                         
     221                        connection_index += 1 
     222         
     223         
     224        ################################################################## 
     225         
    190226        def processConnection(self): 
    191227                 
    192228                clientConnection = self.socket.nextPendingConnection() 
    193                 clientConnection.disconnected.connect(clientConnection.deleteLater) 
     229                #index = self.getNextConnectionIndex() 
     230                #clientConnection.index = index 
     231                #clientConnection.disconnected.connect(clientConnection.deleteLater) 
     232                clientConnection.disconnected.connect(self.deleteDisconnected) 
     233                #self.connections[index] = clientConnection 
    194234                 
    195235                # Wait until client sends authorization request or configuration packet 
     
    214254                                                 
    215255                                                if self.DEBUG: 
    216                                                         print "<-- [ThinkGear Emulator] Flash policy file requested" 
     256                                                        print "<-- [%s] Flash policy file requested" % self.socket.name 
    217257                                                 
    218258                                                data_to_process = packet.data() 
     
    257297                if connection.waitForConnected(CLIENT_NO_REPLY_WAIT): 
    258298                         
     299                        if self.DEBUG: 
     300                                print "<-- [%s] Sending:" % self.socket.name, 
     301                                print data 
     302                         
    259303                        connection.write(data) 
    260304                         
     
    279323                                 
    280324                                if connection.state() == QtNetwork.QAbstractSocket.ConnectedState: 
     325                                         
    281326                                        self.sendResponse(connection, packet) 
    282                                 else: 
    283                                         # Delete references to disconnected sockets 
    284                                         del (self.connections[connection_index]) 
     327                                 
    285328                                 
    286329                                connection_index += 1 
     
    439482         
    440483##################################################################### 
     484##################################################################### 
     485 
     486#class networkServerThinkGearThread(QtCore.QThread): 
     487         
     488        #error = QtCore.pyqtSignal(QtNetwork.QTcpSocket.SocketError) 
     489 
     490        #def __init__(self, socketDescriptor, parent): 
     491                ##super(networkServerThinkGearThread, self).__init__(parent) 
     492                 
     493                #self.socketDescriptor = socketDescriptor 
     494         
     495         
     496        ################################################################### 
     497         
     498        #def run(self): 
     499                 
     500                #tcpSocket = QtNetwork.QTcpSocket() 
     501                 
     502                #if not tcpSocket.setSocketDescriptor(self.socketDescriptor): 
     503                        #self.error.emit(tcpSocket.error()) 
     504                         
     505                        #return 
     506 
     507                ##block = QtCore.QByteArray() 
     508                ##outstr = QtCore.QDataStream(block, QtCore.QIODevice.WriteOnly) 
     509                ##outstr.setVersion(QtCore.QDataStream.Qt_4_0) 
     510                ##outstr.writeUInt16(0) 
     511                ##outstr.writeString(self.text) 
     512                ##outstr.device().seek(0) 
     513                ##outstr.writeUInt16(block.count() - 2) 
     514 
     515                ##tcpSocket.write(block) 
     516                ##tcpSocket.disconnectFromHost() 
     517                ##tcpSocket.waitForDisconnected() 
     518 
     519 
     520##################################################################### 
    441521# Main 
    442522##################################################################### 
Note: See TracChangeset for help on using the changeset viewer.