Skip to content

Commit fe638e5

Browse files
committed
fix SqliteReader.read_all() and fix usage of memoryview
1 parent 118a455 commit fe638e5

1 file changed

Lines changed: 19 additions & 17 deletions

File tree

can/io/sqlite.py

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,6 @@
2121

2222
log = logging.getLogger('can.io.sqlite')
2323

24-
# TODO comment on this
25-
if sys.version_info > (3,):
26-
buffer = memoryview
27-
2824

2925
class SqliteReader(BaseIOHandler):
3026
"""
@@ -57,16 +53,20 @@ def __init__(self, file, table_name="messages"):
5753

5854
def __iter__(self):
5955
for frame_data in self._cursor.execute("SELECT * FROM {}".format(self.table_name)):
60-
timestamp, can_id, is_extended, is_remote, is_error, dlc, data = frame_data
61-
yield Message(
62-
timestamp=timestamp,
63-
is_remote_frame=bool(is_remote),
64-
extended_id=bool(is_extended),
65-
is_error_frame=bool(is_error),
66-
arbitration_id=can_id,
67-
dlc=dlc,
68-
data=data
69-
)
56+
yield SqliteReader._assemble_message(frame_data)
57+
58+
@staticmethod
59+
def _assemble_message(frame_data):
60+
timestamp, can_id, is_extended, is_remote, is_error, dlc, data = frame_data
61+
return Message(
62+
timestamp=timestamp,
63+
is_remote_frame=bool(is_remote),
64+
extended_id=bool(is_extended),
65+
is_error_frame=bool(is_error),
66+
arbitration_id=can_id,
67+
dlc=dlc,
68+
data=data
69+
)
7070

7171
def __len__(self):
7272
# this might not run in constant time
@@ -75,9 +75,11 @@ def __len__(self):
7575

7676
def read_all(self):
7777
"""Fetches all messages in the database.
78+
79+
:rtype: Generator[can.Message]
7880
"""
79-
result = self._cursor.execute("SELECT * FROM {}".format(self.table_name))
80-
return result.fetchall()
81+
result = self._cursor.execute("SELECT * FROM {}".format(self.table_name)).fetchall()
82+
return (SqliteReader._assemble_message(frame) for frame in result)
8183

8284
def stop(self):
8385
"""Closes the connection to the database.
@@ -194,7 +196,7 @@ def _db_writer_thread(self):
194196
msg.is_remote_frame,
195197
msg.is_error_frame,
196198
msg.dlc,
197-
buffer(msg.data)
199+
memoryview(msg.data)
198200
))
199201

200202
if time.time() - self.last_write > self.MAX_TIME_BETWEEN_WRITES or \

0 commit comments

Comments
 (0)