[Neo-report] r1903 gregory - /trunk/neo/client/iterator.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Mar 5 22:24:06 CET 2010
Author: gregory
Date: Fri Mar 5 22:24:05 2010
New Revision: 1903
Log:
Implement __getitem__() on transaction iterator.
Modified:
trunk/neo/client/iterator.py
Modified: trunk/neo/client/iterator.py
==============================================================================
--- trunk/neo/client/iterator.py [iso-8859-1] (original)
+++ trunk/neo/client/iterator.py [iso-8859-1] Fri Mar 5 22:24:05 2010
@@ -79,11 +79,20 @@
raise NotImplementedError('partial scan not implemented yet')
self.app = app
self.txn_list = []
- self.index = 0
+ # next index to load from storage nodes
+ self._next = 0
+ # index of current iteration
+ self._index = 0
self._closed = False
def __iter__(self):
return self
+
+ def __getitem__(self, index):
+ """ Simple index-based iterator """
+ if index != self._index:
+ raise IndexError, index
+ return self.next()
def next(self):
""" Return an iterator for the next transaction"""
@@ -92,12 +101,13 @@
app = self.app
if not self.txn_list:
# ask some transactions
- self.txn_list = app.transactionLog(self.index, self.index + 100)
+ self.txn_list = app.transactionLog(self._next, self._next + 100)
if not self.txn_list:
# scan finished
raise StopIteration
- self.index += len(self.txn_list)
+ self._next += len(self.txn_list)
txn = self.txn_list.pop()
+ self._index += 1
tid = txn['id']
user = txn['user_name']
desc = txn['description']
More information about the Neo-report
mailing list