immutable: define a new interface IImmutableFileURI and declare that CHKFileURI and...
authorZooko O'Whielacronx <zooko@zooko.com>
Wed, 7 Jan 2009 19:24:51 +0000 (12:24 -0700)
committerZooko O'Whielacronx <zooko@zooko.com>
Wed, 7 Jan 2009 19:24:51 +0000 (12:24 -0700)
src/allmydata/interfaces.py
src/allmydata/uri.py

index 178a9e94a5909a59f366776c1eb8ded53130cdf7..5a03142c967b2cee9bcc6569778cdd7d222a4ff7 100644 (file)
@@ -392,6 +392,9 @@ class IFileURI(Interface):
     def get_size():
         """Return the length (in bytes) of the file that I represent."""
 
+class IImmutableFileURI(IFileURI):
+    pass
+
 class IMutableFileURI(Interface):
     """I am a URI which represents a mutable filenode."""
 class INewDirectoryURI(Interface):
index 6b0e0666f82f7ea0f4aab52b57031d236d452a9b..3228ae816a85145be72f59c372526b7f4a185a17 100644 (file)
@@ -4,8 +4,8 @@ from zope.interface import implements
 from twisted.python.components import registerAdapter
 from allmydata import storage
 from allmydata.util import base32, hashutil
-from allmydata.interfaces import IURI, IDirnodeURI, IFileURI, IVerifierURI, \
-     IMutableFileURI, INewDirectoryURI, IReadonlyNewDirectoryURI
+from allmydata.interfaces import IURI, IDirnodeURI, IFileURI, IImmutableFileURI, \
+    IVerifierURI, IMutableFileURI, INewDirectoryURI, IReadonlyNewDirectoryURI
 
 # the URI shall be an ascii representation of the file. It shall contain
 # enough information to retrieve and validate the contents. It shall be
@@ -43,7 +43,7 @@ class _BaseURI:
         return self.storage_index
 
 class CHKFileURI(_BaseURI):
-    implements(IURI, IFileURI)
+    implements(IURI, IImmutableFileURI)
 
     STRING_RE=re.compile('^URI:CHK:'+BASE32STR_128bits+':'+
                          BASE32STR_256bits+':'+NUMBER+':'+NUMBER+':'+NUMBER+
@@ -153,7 +153,7 @@ class CHKFileVerifierURI(_BaseURI):
 
 
 class LiteralFileURI(_BaseURI):
-    implements(IURI, IFileURI)
+    implements(IURI, IImmutableFileURI)
 
     STRING_RE=re.compile('^URI:LIT:'+base32.BASE32STR_anybytes+'$')
     HUMAN_RE=re.compile('^'+OPTIONALHTTPLEAD+'URI'+SEP+'LIT'+SEP+base32.BASE32STR_anybytes+'$')