Ignore:
Timestamp:
06/29/10 15:12:45 (11 years ago)
Author:
sc
Message:

network_client_thinkgear:

  • ThinkGear? authorization support added
  • correct KeyboardInterrupt? handling
  • timeouts applied to socket communications
  • command line support added

network_client:

  • correct KeyboardInterrupt? handling
  • timeouts applied to socket communications
  • command line support added
File:
1 edited

Legend:

Unmodified
Added
Removed
  • remote_control/puzzlebox_brainstorms_network_client_thinkgear.py

    r74 r75  
    1313##################################################################### 
    1414 
    15 import os, sys, time 
     15import os, sys 
     16import signal 
    1617 
    1718from PyQt4 import QtCore, QtGui, QtNetwork 
     
    3031SERVER_HOST = configuration.THINKGEAR_SERVER_HOST 
    3132SERVER_PORT = configuration.THINKGEAR_SERVER_PORT 
     33 
     34CLIENT_NO_REPLY_WAIT = configuration.CLIENT_NO_REPLY_WAIT * 1000 
    3235 
    3336DELIMITER = configuration.THINKGEAR_DELIMITER 
     
    7376                self.socket.error.connect(self.displayError) 
    7477                 
    75                 # Authorization not yet working 
    76                 #if THINKGEAR_AUTHORIZATION_ENABLED: 
    77                         #self.sendCommand(AUTHORIZATION_REQUEST) 
     78                # Perform ThinkGear authorization if enabled 
     79                if THINKGEAR_AUTHORIZATION_ENABLED: 
     80                        self.sendCommand(AUTHORIZATION_REQUEST) 
     81                        self.socket.waitForReadyRead() 
     82                        self.socket.disconnectFromHost() 
    7883                 
    7984                self.sendCommand(THINKGEAR_CONFIGURATION_PARAMETERS) 
     
    8287        ################################################################## 
    8388         
    84         def printReply(self, reply=None): 
     89        def printReply(self): 
    8590                 
    8691                socket_buffer = self.socket.readAll() 
     
    147152                data = json.dumps(command) 
    148153                 
    149                 if self.socket.waitForConnected(3000): 
     154                if self.socket.waitForConnected(CLIENT_NO_REPLY_WAIT): 
    150155                        self.socket.write(data) 
    151156         
     
    157162                if ('isAuthorized' in packet.keys()): 
    158163                         
    159                         self.isAuthorized = response['isAuthorized'] 
     164                        self.isAuthorized = packet['isAuthorized'] 
    160165                 
    161166                 
     
    169174                                if (self.parent != None): 
    170175                                        self.parent.progressBarRelaxation.setValue(packet['eSense']['meditation']) 
    171          
    172          
    173         ################################################################## 
    174          
    175         def authorize_and_send_parameters(self,\ 
    176                                           thinkgear_parameters, \ 
    177                                           authorization_request): 
    178                  
    179                 if self.DEBUG: 
    180                         print "--> [ThinkGear Client] Sending Authorization Request:", 
    181                         print authorization_request 
    182                  
    183                  
    184                 d = self.send_parameters(thinkgear_parameters, authorization_request) 
    185                 d.addCallback(self.update_authorization) 
    186176 
    187177 
     
    190180##################################################################### 
    191181 
    192 #class puzzlebox_brainstorms_network_client_command_line(puzzlebox_brainstorms_client): 
    193          
    194         #def __init__(self, log, \ 
    195                           #command_parameters, \ 
    196                           #server_host=SERVER_HOST, \ 
    197                           #server_port=SERVER_PORT, \ 
    198                           #DEBUG=DEBUG): 
    199                  
    200                 #self.log = log 
    201                 #self.DEBUG=DEBUG 
    202                  
    203                 #self.command_parameters = command_parameters 
    204                 #self.server_host = server_host 
    205                 #self.server_port = server_port 
    206                 #self.max_connection_attempts = MAX_CONNECTION_ATTEMPTS 
    207          
    208          
    209         ################################################################### 
    210          
    211         #def execute_command_line(self): 
    212                  
    213                 #(command) = self.parse_command_line(self.command_parameters) 
    214                  
    215                 #d = self.send_command(command) 
    216                 #d.addCallback(self.print_response_and_stop) 
    217          
    218          
    219         ################################################################### 
    220          
    221         #def print_response_and_stop(self, response): 
    222                  
    223                 #if self.DEBUG: 
    224                         #print "---> [Client] Server Response:", 
    225                         #print response 
    226                  
    227                 #try: 
    228                         #reactor.stop() 
    229                 #except: 
    230                         #print "ERROR: Can't stop reactor that isn't running." 
    231          
    232          
    233         ################################################################### 
    234          
    235         #def parse_command_line(self, command_parameters): 
    236                  
    237                 #try: 
    238                         #command = command_parameters[0] 
    239                 #except: 
    240                         #command = None 
    241                  
    242                  
    243                 #return(command) 
     182class puzzlebox_brainstorms_network_client_thinkgear_command_line( \ 
     183              puzzlebox_brainstorms_network_client_thinkgear): 
     184         
     185        def __init__(self, log, \ 
     186                          command_parameters, \ 
     187                          server_host=SERVER_HOST, \ 
     188                          server_port=SERVER_PORT, \ 
     189                          DEBUG=DEBUG): 
     190                 
     191                self.log = log 
     192                self.DEBUG = DEBUG 
     193                self.parent = None 
     194                 
     195                self.command_parameters = command_parameters 
     196                self.server_host = server_host 
     197                self.server_port = server_port 
     198                 
     199                self.configureNetwork() 
     200                 
     201                self.execute_command_line() 
     202         
     203         
     204        ################################################################## 
     205         
     206        def execute_command_line(self): 
     207                 
     208                (command) = self.parse_command_line(self.command_parameters) 
     209                 
     210                if (command != None): 
     211                 
     212                        self.sendCommand(command) 
     213                         
     214                        self.socket.waitForReadyRead(CLIENT_NO_REPLY_WAIT) 
     215         
     216         
     217        ################################################################## 
     218         
     219        def parse_command_line(self, command_parameters): 
     220                 
     221                try: 
     222                        command = command_parameters[0] 
     223                except: 
     224                        command = None 
     225                 
     226                 
     227                return(command) 
    244228 
    245229 
     
    250234if __name__ == '__main__': 
    251235         
    252         #log = puzzlebox_logger.puzzlebox_logger(logfile='thinkgear_client') 
     236        # Perform correct KeyboardInterrupt handling 
     237        signal.signal(signal.SIGINT, signal.SIG_DFL) 
     238         
     239        #log = puzzlebox_logger.puzzlebox_logger(logfile='client') 
    253240        log = None 
    254241         
     
    257244        #log.info("Command parameters: %s" % command_parameters) 
    258245         
    259         #client = puzzlebox_brainstorms_client_twisted_command_line(log, \ 
    260                                                            #command_parameters, \ 
    261                                                            #server_host=SERVER_HOST, \ 
    262                                                            #server_port=SERVER_PORT, \ 
    263                                                            #DEBUG=DEBUG) 
    264          
    265         #reactor.callWhenRunning(client.execute_command_line) 
    266         #reactor.run() 
    267          
    268          
    269          
    270          
    271         #authorization_request = AUTHORIZATION_REQUEST 
    272         #thinkgear_parameters = THINKGEAR_PARAMETERS 
    273          
    274         #thinkgear_client = puzzlebox_thinkgear_client( \ 
    275                     #log, \ 
    276                     #server_host=SERVER_HOST, \ 
    277                     #server_port=SERVER_PORT, \ 
    278                     #DEBUG=DEBUG) 
    279          
    280          
    281         #if ENABLE_THINKGEAR_AUTHORIZATION: 
    282                 ## Use ThinkGear authentication 
    283                 #reactor.callWhenRunning( \ 
    284                         #thinkgear_client.authorize_and_send_parameters, \ 
    285                         #thinkgear_parameters, \ 
    286                         #authorization_request) 
    287          
    288         #else:   
    289                 ## Do not use ThinkGear authentication 
    290                 #authorization_request = None 
    291                 #reactor.callWhenRunning( \ 
    292                         #thinkgear_client.send_parameters, \ 
    293                         #thinkgear_parameters, \ 
    294                         #authorization_request) 
    295  
     246        client = puzzlebox_brainstorms_network_client_thinkgear_command_line(log, \ 
     247                    command_parameters, \ 
     248                    server_host=SERVER_HOST, \ 
     249                    server_port=SERVER_PORT, \ 
     250                    DEBUG=DEBUG) 
     251         
     252        while client.socket.waitForReadyRead(CLIENT_NO_REPLY_WAIT): 
     253                pass 
     254 
Note: See TracChangeset for help on using the changeset viewer.