src/HOL/Tools/Sledgehammer/MaSh/src/server.py
changeset 53115 e08a58161bf1
parent 53100 1133b9e83f09
child 53119 ac18480cbf9d
equal deleted inserted replaced
53114:4c2b1e64c990 53115:e08a58161bf1
   105         assert len(self.server.predictions) == len(predictionValues)
   105         assert len(self.server.predictions) == len(predictionValues)
   106         self.server.logger.debug('Time needed: '+str(round(time()-self.startTime,2)))
   106         self.server.logger.debug('Time needed: '+str(round(time()-self.startTime,2)))
   107 
   107 
   108         # Output        
   108         # Output        
   109         predictionNames = [str(self.server.dicts.idNameDict[p]) for p in self.server.predictions[:numberOfPredictions]]
   109         predictionNames = [str(self.server.dicts.idNameDict[p]) for p in self.server.predictions[:numberOfPredictions]]
   110         predictionValues = [str(x) for x in predictionValues[:self.server.args.numberOfPredictions]]
   110         predictionValues = [str(x) for x in predictionValues[:numberOfPredictions]]
   111         predictionsStringList = ['%s=%s' % (predictionNames[i],predictionValues[i]) for i in range(len(predictionNames))]
   111         predictionsStringList = ['%s=%s' % (predictionNames[i],predictionValues[i]) for i in range(len(predictionNames))]
   112         predictionsString = string.join(predictionsStringList,' ')
   112         predictionsString = string.join(predictionsStringList,' ')
   113         outString = '%s: %s' % (name,predictionsString)
   113         outString = '%s: %s' % (name,predictionsString)
   114         self.request.sendall(outString)
   114         self.request.sendall(outString)
   115     
   115     
   116     def shutdown(self):
   116     def shutdown(self,saveModels=True):
   117         self.request.sendall('Shutting down server.')
   117         self.request.sendall('Shutting down server.')
       
   118         if saveModels:
       
   119             self.save()
       
   120         self.server.shutdown()
       
   121     
       
   122     def save(self):
   118         # Save Models
   123         # Save Models
   119         self.server.model.save(self.server.args.modelFile)
   124         self.server.model.save(self.server.args.modelFile)
   120         self.server.dicts.save(self.server.args.dictsFile)
   125         self.server.dicts.save(self.server.args.dictsFile)
   121         if not self.server.args.saveStats == None:
   126         if not self.server.args.saveStats == None:
   122             statsFile = os.path.join(self.server.args.outputDir,self.server.args.saveStats)
   127             statsFile = os.path.join(self.server.args.outputDir,self.server.args.saveStats)
   123             self.server.stats.save(statsFile)
   128             self.server.stats.save(statsFile)
   124         self.server.shutdown()
       
   125     
   129     
   126     def handle(self):
   130     def handle(self):
   127         # self.request is the TCP socket connected to the client
   131         # self.request is the TCP socket connected to the client
   128         self.data = self.request.recv(262144).strip()
   132         self.data = self.request.recv(4194304).strip()
       
   133         self.server.lock.acquire()
   129         #print "{} wrote:".format(self.client_address[0])
   134         #print "{} wrote:".format(self.client_address[0])
   130         #print self.data
   135         self.startTime = time()  
   131         self.startTime = time()
   136         if self.data == 'shutdown':
   132         if self.data == 's':
   137             self.shutdown()         
   133             self.shutdown()            
   138         elif self.data == 'save':
       
   139             self.save()       
   134         elif self.data.startswith('i'):            
   140         elif self.data.startswith('i'):            
   135             self.init(self.data[2:])
   141             self.init(self.data[2:])
   136         elif self.data.startswith('!'):
   142         elif self.data.startswith('!'):
   137             self.update()
   143             self.update()
   138         elif self.data.startswith('p'):
   144         elif self.data.startswith('p'):
   139             self.overwrite()
   145             self.overwrite()
   140         elif self.data.startswith('?'):               
   146         elif self.data.startswith('?'):               
   141             self.predict()
   147             self.predict()
   142         elif self.data == '':
   148         elif self.data == '':
   143             # Empty Socket
   149             # Empty Socket
   144             return
   150             pass
   145         elif self.data == 'avgStats':
   151         elif self.data == 'avgStats':
   146             self.request.sendall(self.server.stats.printAvg())            
   152             self.request.sendall(self.server.stats.printAvg())            
   147         else:
   153         else:
   148             self.request.sendall('Unspecified input format: \n%s',self.data)
   154             self.request.sendall('Unspecified input format: \n%s',self.data)
   149         self.server.callCounter += 1
   155         self.server.callCounter += 1
   150 
   156         self.server.lock.release()
   151         #returnString = 'Time needed: '+str(round(time()-self.startTime,2))
       
   152         #print returnString
       
   153 
   157 
   154 if __name__ == "__main__":
   158 if __name__ == "__main__":
   155     HOST, PORT = "localhost", 9255
   159     HOST, PORT = "localhost", 9255
   156     #print 'Started Server'
   160     #print 'Started Server'
   157     # Create the server, binding to localhost on port 9999
   161     # Create the server, binding to localhost on port 9999