Changeset 3197

Show
Ignore:
Timestamp:
06/28/07 21:58:07 (17 years ago)
Author:
jerome
Message:

Committed new version of PJL accounting module.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • pykota/trunk/pykota/accounters/pjl.py

    r3195 r3197  
    7878        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    7979        try : 
     80            sock.settimeout(1.0) 
    8081            sock.connect((self.printerHostname, self.port)) 
    8182        except socket.error, msg : 
     
    8384            return False 
    8485        else : 
    85             sock.setblocking(False) 
    8686            self.sock = sock 
    8787            self.closed = False 
     
    9090            self.readthread = threading.Thread(target=self.readloop) 
    9191            self.readthread.start() 
     92            time.sleep(1) 
    9293            self.parent.filter.logdebug("Connected to printer %s:%s" % (self.printerHostname, self.port)) 
    9394            return True 
     
    113114        while not self.quitEvent.isSet() : 
    114115            try : 
    115                 answer = self.sock.recv(4096) 
     116                answer = self.sock.recv(1) 
     117            except socket.timeout :     
     118                pass 
    116119            except socket.error, (err, msg) : 
    117                 time.sleep(0.1) # We will try again later in all cases 
    118                 if err != errno.EAGAIN : 
    119                     self.parent.filter.printInfo(_("Problem while receiving PJL answer from %s:%s : %s") % (self.printerHostname, self.port, str(msg)), "warn") 
     120                self.parent.filter.printInfo(_("Problem while receiving PJL answer from %s:%s : %s") % (self.printerHostname, self.port, str(msg)), "warn") 
    120121            else :     
    121122                if answer : 
     
    131132        """Retrieves a printer's internal page counter and status via PJL.""" 
    132133        try : 
    133             self.sock.sendall(pjlMessage) 
     134            nbsent = self.sock.send(pjlMessage) 
     135            if nbsent != len(pjlMessage) : 
     136                raise socket.error, "Short write" 
    134137        except socket.error, msg : 
    135138            self.parent.filter.printInfo(_("Problem while sending PJL query to %s:%s : %s") % (self.printerHostname, self.port, str(msg)), "warn") 
     
    139142            while (actualpagecount is None) or (self.printerStatus is None) : 
    140143                try : 
    141                     answer = self.queue.get(True, 5) 
     144                    answer = self.queue.get(True, 2) 
    142145                except Queue.Empty :     
    143146                    self.parent.filter.logdebug("Timeout when reading printer's answer from %s:%s" % (self.printerHostname, self.port))