Changeset 912:40fd6425a5c2

Show
Ignore:
Timestamp:
09/12/08 17:28:43 (4 months ago)
Author:
Phil <phil@secdev.org>
Message:

Improved CacheInstance? and NetCache?

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • scapy/config.py

    r911 r912  
    154154        dict.update(self, other) 
    155155        self._timetable.update(other._timetable) 
    156     def __repr__(self): 
    157         if self.timeout is None: 
    158             n = len(self) 
    159         else: 
    160             n = 0 
    161             t0 = time.time() 
    162             for k,v in self.iteritems(): 
    163                 t = self._timetable[k] 
    164                 if t0-t <= self.timeout: 
    165                     n += 1 
    166         return "%s: %i valid items. Timeout=%rs" % (self.name, n, self.timeout) 
     156    def iteritems(self): 
     157        if self.timeout is None: 
     158            return dict.iteritems(self) 
     159        t0=time.time() 
     160        return ((k,v) for (k,v) in dict.iteritems(self) if t0-self._timetable[k] < self.timeout)  
     161    def iterkeys(self): 
     162        if self.timeout is None: 
     163            return dict.iterkeys(self) 
     164        t0=time.time() 
     165        return (k for k in dict.iterkeys(self) if t0-self._timetable[k] < self.timeout) 
     166    def __iter__(self): 
     167        return self.iterkeys() 
     168    def itervalues(self): 
     169        if self.timeout is None: 
     170            return dict.itervalues(self) 
     171        t0=time.time() 
     172        return (v for (k,v) in dict.iteritems(self) if t0-self._timetable[k] < self.timeout) 
     173    def items(self): 
     174        if self.timeout is None: 
     175            return dict.items(self) 
     176        t0=time.time() 
     177        return [(k,v) for (k,v) in dict.iteritems(self) if t0-self._timetable[k] < self.timeout] 
     178    def keys(self): 
     179        if self.timeout is None: 
     180            return dict.keys(self) 
     181        t0=time.time() 
     182        return [k for k in dict.iterkeys(self) if t0-self._timetable[k] < self.timeout] 
     183    def values(self): 
     184        if self.timeout is None: 
     185            return dict.values(self) 
     186        t0=time.time() 
     187        return [v for (k,v) in dict.iteritems(self) if t0-self._timetable[k] < self.timeout] 
     188    def __len__(self): 
     189        if self.timeout is None: 
     190            return dict.__len__(self) 
     191        return len(self.keys()) 
     192    def summary(self): 
     193        return "%s: %i valid items. Timeout=%rs" % (self.name, len(self), self.timeout) 
     194    def __repr__(self): 
     195        s = [] 
     196        if self: 
     197            mk = max(len(k) for k in self.iterkeys()) 
     198            fmt = "%%-%is %%s" % (mk+1) 
     199            for item in self.iteritems(): 
     200                s.append(fmt % item) 
     201        return "\n".join(s) 
     202             
    167203             
    168204 
     
    191227            c.flush() 
    192228    def __repr__(self): 
    193         return "\n".join(repr(c) for c in self._caches_list) 
     229        return "\n".join(c.summary() for c in self._caches_list) 
    194230         
    195231