diff options
| author | Bob Halley <halley@dnspython.org> | 2020-07-30 09:21:03 -0700 |
|---|---|---|
| committer | Bob Halley <halley@dnspython.org> | 2020-08-10 06:43:32 -0700 |
| commit | 54deb97c2a5331fe99a12d720f24fb481ec31576 (patch) | |
| tree | 0954caa36095efcc667aee6a3732759d4c9001c6 /dns/node.py | |
| parent | 26fd19690c44a01c84c27a2d4244d2e5dc7b7a19 (diff) | |
| download | dnspython-transaction.tar.gz | |
txn checkpointtransaction
Diffstat (limited to 'dns/node.py')
| -rw-r--r-- | dns/node.py | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/dns/node.py b/dns/node.py index b7e21b5..8e1451f 100644 --- a/dns/node.py +++ b/dns/node.py @@ -183,3 +183,33 @@ class Node: self.delete_rdataset(replacement.rdclass, replacement.rdtype, replacement.covers) self.rdatasets.append(replacement) + + +@dns.immutable.immutable +class ImmutableNode(Node): + + """An ImmutableNode is an immutable set of rdatasets.""" + + def __init__(self, node): + super().__init__() + self.rdatasets = tuple( + [dns.rdataset.ImmutableRdataset(rds) for rds in node.rdatasets] + ) + + def find_rdataset(self, rdclass, rdtype, covers=dns.rdatatype.NONE, + create=False): + if create: + raise TypeError("immutable") + return super().find_rdataset(rdclass, rdtype, covers, False) + + def get_rdataset(self, rdclass, rdtype, covers=dns.rdatatype.NONE, + create=False): + if create: + raise TypeError("immutable") + return super().get_rdataset(rdclass, rdtype, covers, False) + + def delete_rdataset(self, rdclass, rdtype, covers=dns.rdatatype.NONE): + raise TypeError("immutable") + + def replace_rdataset(self, replacement): + raise TypeError("immutable") |
