1 | diff --git a/src/allmydata/interfaces.py b/src/allmydata/interfaces.py |
---|
2 | index 166aeee..85bcc42 100644 |
---|
3 | --- a/src/allmydata/interfaces.py |
---|
4 | +++ b/src/allmydata/interfaces.py |
---|
5 | @@ -630,6 +630,26 @@ class IReadable(Interface): |
---|
6 | """ |
---|
7 | |
---|
8 | |
---|
9 | +class IWritable(Interface): |
---|
10 | + """ |
---|
11 | + I define methods that callers can use to update SDMF and MDMF |
---|
12 | + mutable files on a Tahoe-LAFS grid. |
---|
13 | + """ |
---|
14 | + # XXX: For the moment, we have only this. It is possible that we |
---|
15 | + # want to move overwrite() and modify() in here too. |
---|
16 | + def update(data=IMutableUploadable, offset): |
---|
17 | + """ |
---|
18 | + I write the data from my data argument to the MDMF file, |
---|
19 | + starting at offset. I continue writing data until my data |
---|
20 | + argument is exhausted, appending data to the file as necessary. |
---|
21 | + """ |
---|
22 | + # to append data: offset=node.get_size_of_best_version() |
---|
23 | + # do we want to support compacting MDMF? |
---|
24 | + # for an MDMF file, this can be done with O(data.get_size()) |
---|
25 | + # memory. For an SDMF file, any modification takes |
---|
26 | + # O(node.get_size_of_best_version()). |
---|
27 | + |
---|
28 | + |
---|
29 | class IMutableFileVersion(IReadable): |
---|
30 | """I provide access to a particular version of a mutable file. The |
---|
31 | access is read/write if I was obtained from a filenode derived from |
---|
32 | @@ -798,6 +818,7 @@ class IFilesystemNode(Interface): |
---|
33 | def raise_error(): |
---|
34 | """Raise any error associated with this node.""" |
---|
35 | |
---|
36 | + # XXX: These may not be appropriate outside the context of an IReadable. |
---|
37 | def get_size(): |
---|
38 | """Return the length (in bytes) of the data this node represents. For |
---|
39 | directory nodes, I return the size of the backing store. I return |
---|