Ignore:
Timestamp:
05/05/12 11:40:28 (12 years ago)
Author:
István Váradi <ivaradi@…>
Branch:
default
hg-Phase:
(<MercurialRepository 1 'hg:/home/ivaradi/mlx/hg' '/'>, 'public')
Message:

Made the sending of the closing message more reliable

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/mlx/fsuipc.py

    r148 r152  
    245245        """
    246246        with self._requestCondition:
    247             self._requests.append(Handler.Request(True, data, callback, extra))
     247            request = Handler.Request(True, data, callback, extra)
     248            #print "fsuipc.Handler.requestWrite", request
     249            self._requests.append(request)
    248250            self._requestCondition.notify()
    249251
     
    371373                timeout = self._periodicRequests[0].nextFire - time.time()
    372374
    373             if timeout is not None and timeout <= 0.0:
     375            if self._requests or \
     376               (timeout is not None and timeout <= 0.0):
    374377                return
    375378           
     
    378381    def _disconnect(self):
    379382        """Disconnect from the flight simulator."""
     383        print "fsuipc.Handler._disconnect"
    380384        if self._connected:
    381385            pyuipc.close()
     
    394398        whole processing the request and reconnecting."""
    395399        self._requestCondition.release()
     400
     401        #print "fsuipc.Handler._processRequest", request
    396402
    397403        needReconnect = False
     
    531537        self._flareStart = None
    532538        self._flareStartFS = None
    533    
     539
    534540        self._latin1decoder = codecs.getdecoder("iso-8859-1")
    535541
     
    600606            self._flareRequestID = None
    601607
    602     def sendMessage(self, message, duration = 3):
     608    def sendMessage(self, message, duration = 3,
     609                    _disconnect = False):
    603610        """Send a message to the pilot via the simulator.
    604611
     
    613620                (0x32fa, 'h', duration)]
    614621
    615         self._handler.requestWrite(data, self._handleMessageSent)
     622        #if _disconnect:
     623        #    print "fsuipc.Simulator.sendMessage(disconnect)", message
     624
     625        self._handler.requestWrite(data, self._handleMessageSent,
     626                                   extra = _disconnect)
    616627
    617628    def getFuel(self, tanks, callback):
     
    655666        self._nextSyncTime = -1
    656667           
    657     def disconnect(self):
     668    def disconnect(self, closingMessage = None, duration = 3):
    658669        """Disconnect from the simulator."""
    659670        assert not self._monitoringRequested
     671
     672        print "fsuipc.Simulator.disconnect", closingMessage, duration
    660673       
    661674        self._stopNormal()
    662         self._handler.disconnect()
     675        if closingMessage is None:
     676            self._handler.disconnect()
     677        else:
     678            self.sendMessage(closingMessage, duration = duration,
     679                             _disconnect = True)
    663680
    664681    def _startDefaultNormal(self):
     
    874891        callback(dow, payload, zfw, grossWeight)
    875892
    876     def _handleMessageSent(self, success, extra):
     893    def _handleMessageSent(self, success, disconnect):
    877894        """Callback for a message sending request."""
    878         pass
     895        #print "fsuipc.Simulator._handleMessageSent", disconnect
     896        if disconnect:
     897            self._handler.disconnect()
    879898
    880899    def _handleFuelRetrieved(self, data, callback):
Note: See TracChangeset for help on using the changeset viewer.