forked from LBRYCommunity/lbry-sdk
30 lines
867 B
Python
30 lines
867 B
Python
import logging
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
class HashBlobReader:
|
|
"""
|
|
This is a file like reader class that supports
|
|
read(size) and close()
|
|
"""
|
|
def __init__(self, read_handle, finished_cb):
|
|
self.finished_cb = finished_cb
|
|
self.finished_cb_d = None
|
|
self.read_handle = read_handle
|
|
|
|
def __del__(self):
|
|
if self.finished_cb_d is None:
|
|
log.warning("Garbage collection was called, but reader for %s was not closed yet",
|
|
self.read_handle.name)
|
|
self.close()
|
|
|
|
def read(self, size=-1):
|
|
return self.read_handle.read(size)
|
|
|
|
def close(self):
|
|
# if we've already closed and called finished_cb, do nothing
|
|
if self.finished_cb_d is not None:
|
|
return
|
|
self.read_handle.close()
|
|
self.finished_cb_d = self.finished_cb(self)
|