2121
2222log = logging .getLogger ('can.io.sqlite' )
2323
24- # TODO comment on this
25- if sys .version_info > (3 ,):
26- buffer = memoryview
27-
2824
2925class 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