Guest User

Untitled

a guest
Dec 2nd, 2018
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.24 KB | None | 0 0
  1. class RequestHandler(SocketServer.BaseRequestHandler):
  2.  
  3.     def __init__(self, request, client_address, server):
  4.         self.logger = glogger #logging.getLogger('Handler')
  5.         self.logger.debug('New request')
  6.         SocketServer.BaseRequestHandler.__init__(self, request, client_address, server)
  7.         return
  8.        
  9.     def handle(self):
  10.         self.server.socket.setblocking(0)
  11.         #self.server.socket.settimeout(10.0)
  12.         cur_pid         = os.getpid() #threading.current_thread().
  13.         self.logger.info("handle start, pid: "+str(cur_pid))
  14.  
  15.         self.loop       = True
  16.         self.counts     = 120
  17.         self.counter    = self.counts
  18.         self.last       = time.time()
  19.         self.pid        = str(cur_pid)
  20.         self.imei       = "PID: "+self.pid     #until we get the real one
  21.         self.lat        = 0
  22.         self.lon        = 0
  23.         self.spd        = 0
  24.         self.bearing    = 0
  25.         self.acc        = 0
  26.         self.pos        = None
  27.         self.bytes_r    = 0
  28.         self.bytes_s    = 0
  29.         self.posidx     = 0 # number of positions received
  30.         self.poshandler = None
  31.  
  32.         #
  33.         # LOOP
  34.         #
  35.         while self.loop:
  36.             sdata = ""
  37.             try:
  38.                 sdata = self.request.recv(1024)
  39.                 if not sdata:
  40.                     self.error("Not data.")
  41.                     self.counter = 0
  42.                 else:
  43.                     self.logger.info("received raw data:" + sdata);
  44.             except socket.error as err:
  45.                 if str(err) == "[Errno 35] Resource temporarily unavailable":
  46.                     time.sleep(0.1) #OS X bug workaround
  47.                     continue
  48.                 self.error("Socket error.")
  49.                 self.counter = 0
  50.             if sdata == "":
  51.                 self.counter = self.counter - 1
  52.             else:
  53.                 self.bytes_r += len(sdata)
  54.                 sdata = sdata.rstrip()
  55.                 self.debug("recv("+sdata+")")
  56.  
  57.             # Device must send imei in every request (independent of which kinf off message)
  58.             # Check if string contains the device imei, otherwise we skip the handle
  59.             known_device = False;
  60.             for key, value in devices.items():
  61.                 if key in sdata:
  62.                     known_device = True;
  63.                     break;
  64.  
  65.             if known_device:
  66.                 self.logger.info("Found a known device. Handle it");
  67.                
  68.                 ########################################
  69.                 ########################################
  70.                
  71.                     # Store this device in a list (trackers)
  72.                
  73.                 ########################################
  74.                
  75.                
  76.             else:
  77.                 continue
  78.  
  79.            
  80.  
  81.  
  82. if __name__ == '__main__':
  83.     import socket
  84.     import threading
  85.  
  86.     PORT     = 9000
  87.     address  = ('', PORT).
  88.     server   = Server(address, RequestHandler)
  89.     ip, port = server.server_address.
  90.  
  91.     t = threading.Thread(target=server.serve_forever)
  92.     t.setDaemon(True) # don't hang on exit
  93.     t.start()
  94.     glogger.info('Server loop running in process:'+str(os.getpid()))
  95.  
  96.     while True:
  97.         try:
  98.             time.sleep(1)
  99.            
  100.             ########################################
  101.             ########################################
  102.            
  103.                 # Iterate devices and remove the old ones from the array (trackers)
  104.            
  105.             ########################################
  106.  
  107.             continue
Advertisement
Add Comment
Please, Sign In to add comment