Skip to content
Snippets Groups Projects
Commit 0c40e64d authored by Katsunori FUJIWARA's avatar Katsunori FUJIWARA
Browse files

scmutil: factor out common logic of delayclosedfile to reuse it

This is a preparation for the subsequent patch, which adds another
proxy class for a file object.
parent 041a77a2
No related branches found
No related tags found
No related merge requests found
......@@ -1300,8 +1300,8 @@
# experimental config: format.generaldelta
return ui.configbool('format', 'generaldelta', False)
class delayclosedfile(object):
"""Proxy for a file object whose close is delayed.
class closewrapbase(object):
"""Base class of wrapper, which hooks closing
Do not instantiate outside of the vfs layer.
"""
......@@ -1305,6 +1305,5 @@
Do not instantiate outside of the vfs layer.
"""
def __init__(self, fh, closer):
def __init__(self, fh):
object.__setattr__(self, '_origfh', fh)
......@@ -1310,5 +1309,4 @@
object.__setattr__(self, '_origfh', fh)
object.__setattr__(self, '_closer', closer)
def __getattr__(self, attr):
return getattr(self._origfh, attr)
......@@ -1323,6 +1321,21 @@
return self._origfh.__enter__()
def __exit__(self, exc_type, exc_value, exc_tb):
raise NotImplementedError('attempted instantiating ' + str(type(self)))
def close(self):
raise NotImplementedError('attempted instantiating ' + str(type(self)))
class delayclosedfile(closewrapbase):
"""Proxy for a file object whose close is delayed.
Do not instantiate outside of the vfs layer.
"""
def __init__(self, fh, closer):
super(delayclosedfile, self).__init__(fh)
object.__setattr__(self, '_closer', closer)
def __exit__(self, exc_type, exc_value, exc_tb):
self._closer.close(self._origfh)
def close(self):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment