def check_scanning (self): p = producers.scanning_producer(test_string) self.test_val('p.more()', test_string[:1024]) p = producers.scanning_producer(test_string, buffer_size = 5) self._check_all(p, test_string)
def found_terminator (self): self.buffer, data = [], ''.join(self.buffer) if self.pstate is self.STATE_LENGTH: packet_length = int (data, 16) self.set_terminator (packet_length) self.pstate = self.STATE_PACKET else: self.set_terminator (8) self.pstate = self.STATE_LENGTH oid, kind, arg = marshal.loads (data) obj, refcnt = self.proxies[oid] reply_kind = 2 try: if kind == 0: # __call__ result = obj(*arg) elif kind == 1: # __getattr__ result = getattr (obj, arg) elif kind == 2: # __setattr__ key, value = arg setattr (obj, key, value) result = None elif kind == 3: # __repr__ result = repr(obj) elif kind == 4: # __del__ self.forget_reference (oid) result = None elif kind == 5: # __getitem__ result = obj[arg] elif kind == 6: # __setitem__ (key, value) = arg obj[key] = value result = None elif kind == 7: # __len__ result = len(obj) else: result = None except: reply_kind = 1 (file,fun,line), t, v, tbinfo = asyncore.compact_traceback() result = '%s:%s:%s:%s (%s:%s)' % (MY_NAME, file, fun, line, t, str(v)) self.log_info (result, 'error') self.exception_counter.increment() self.request_counter.increment() try: rb = marshal.dumps ((reply_kind, result)) except ValueError: # unmarshallable object, return a reference rid = id(result) self.new_reference (result) rb = marshal.dumps ((0, rid)) self.push_with_producer ( scanning_producer ( ('%08x' % len(rb)) + rb, buffer_size = 65536 ) )
def found_terminator(self): self.buffer, data = [], ''.join(self.buffer) if self.pstate is self.STATE_LENGTH: packet_length = int(data, 16) self.set_terminator(packet_length) self.pstate = self.STATE_PACKET else: self.set_terminator(8) self.pstate = self.STATE_LENGTH oid, kind, arg = marshal.loads(data) obj, refcnt = self.proxies[oid] reply_kind = 2 try: if kind == 0: # __call__ result = obj(*arg) elif kind == 1: # __getattr__ result = getattr(obj, arg) elif kind == 2: # __setattr__ key, value = arg setattr(obj, key, value) result = None elif kind == 3: # __repr__ result = repr(obj) elif kind == 4: # __del__ self.forget_reference(oid) result = None elif kind == 5: # __getitem__ result = obj[arg] elif kind == 6: # __setitem__ (key, value) = arg obj[key] = value result = None elif kind == 7: # __len__ result = len(obj) else: result = None except: reply_kind = 1 (file, fun, line), t, v, tbinfo = asyncore.compact_traceback() result = '%s:%s:%s:%s (%s:%s)' % (MY_NAME, file, fun, line, t, str(v)) self.log_info(result, 'error') self.exception_counter.increment() self.request_counter.increment() try: rb = marshal.dumps((reply_kind, result)) except ValueError: # unmarshallable object, return a reference rid = id(result) self.new_reference(result) rb = marshal.dumps((0, rid)) self.push_with_producer( scanning_producer(('%08x' % len(rb)) + rb, buffer_size=65536))