mirror of
https://github.com/Mikaela/Limnoria.git
synced 2025-02-19 07:00:57 +01:00
Added resize operation to RingBuffer and make IrcState use it.
This commit is contained in:
parent
8282d3e847
commit
a95f1bc28c
@ -275,6 +275,7 @@ class IrcState(IrcCommandDispatcher):
|
|||||||
def reset(self):
|
def reset(self):
|
||||||
"""Resets the state to normal, unconnected state."""
|
"""Resets the state to normal, unconnected state."""
|
||||||
self.history.reset()
|
self.history.reset()
|
||||||
|
self.history.resize(conf.supybot.protocols.irc.maxHistoryLength())
|
||||||
self.channels = ircutils.IrcDict()
|
self.channels = ircutils.IrcDict()
|
||||||
self.nicksToHostmasks = ircutils.IrcDict()
|
self.nicksToHostmasks = ircutils.IrcDict()
|
||||||
|
|
||||||
|
@ -60,6 +60,13 @@ class RingBuffer(object):
|
|||||||
self.L = []
|
self.L = []
|
||||||
self.i = 0
|
self.i = 0
|
||||||
|
|
||||||
|
def resize(self, i):
|
||||||
|
if self.full:
|
||||||
|
L = list(self)
|
||||||
|
self.reset()
|
||||||
|
self.L = L
|
||||||
|
self.maxSize = i
|
||||||
|
|
||||||
def __len__(self):
|
def __len__(self):
|
||||||
return len(self.L)
|
return len(self.L)
|
||||||
|
|
||||||
@ -85,12 +92,11 @@ class RingBuffer(object):
|
|||||||
self.L[self.i] = elt
|
self.L[self.i] = elt
|
||||||
self.i += 1
|
self.i += 1
|
||||||
self.i %= len(self.L)
|
self.i %= len(self.L)
|
||||||
|
elif len(self) == self.maxSize:
|
||||||
|
self.full = True
|
||||||
|
self.append(elt)
|
||||||
else:
|
else:
|
||||||
if len(self) >= self.maxSize:
|
self.L.append(elt)
|
||||||
self.full = True
|
|
||||||
self.append(elt)
|
|
||||||
else:
|
|
||||||
self.L.append(elt)
|
|
||||||
|
|
||||||
def extend(self, seq):
|
def extend(self, seq):
|
||||||
for elt in seq:
|
for elt in seq:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user