1
|
|
|
import asyncio |
2
|
|
|
from .standard_address_space_part3 import create_standard_address_space_Part3 |
3
|
|
|
from .standard_address_space_part4 import create_standard_address_space_Part4 |
4
|
|
|
from .standard_address_space_part5 import create_standard_address_space_Part5 |
5
|
|
|
from .standard_address_space_part8 import create_standard_address_space_Part8 |
6
|
|
|
from .standard_address_space_part9 import create_standard_address_space_Part9 |
7
|
|
|
from .standard_address_space_part10 import create_standard_address_space_Part10 |
8
|
|
|
from .standard_address_space_part11 import create_standard_address_space_Part11 |
9
|
|
|
from .standard_address_space_part13 import create_standard_address_space_Part13 |
10
|
|
|
|
11
|
|
|
|
12
|
|
|
|
13
|
|
|
|
14
|
|
|
|
15
|
|
|
class PostponeReferences: |
16
|
|
|
def __init__(self, server): |
17
|
|
|
self.server = server |
18
|
|
|
self.postponed_refs = None |
19
|
|
|
self.postponed_nodes = None |
20
|
|
|
#self.add_nodes = self.server.add_nodes |
21
|
|
|
|
22
|
|
|
async def add_nodes(self, nodes): |
23
|
|
|
async for node in self.server.try_add_nodes(nodes, check=False): |
24
|
|
|
self.postponed_nodes.append(node) |
25
|
|
|
|
26
|
|
|
async def add_references(self, refs): |
27
|
|
|
async for ref in self.server.try_add_references(refs): |
28
|
|
|
#g = self.server.try_add_references(refs) |
29
|
|
|
self.postponed_refs.append(ref) |
30
|
|
|
# no return |
31
|
|
|
|
32
|
|
|
async def __aenter__(self): |
33
|
|
|
self.postponed_refs = [] |
34
|
|
|
self.postponed_nodes = [] |
35
|
|
|
await asyncio.sleep(0) |
36
|
|
|
return self |
37
|
|
|
|
38
|
|
|
async def __aexit__(self, exc_type, exc_val, exc_tb): |
39
|
|
|
if exc_type is None and exc_val is None: |
40
|
|
|
remaining_nodes = [] |
41
|
|
|
remaining_refs = [] |
42
|
|
|
async for remaining_node in self.server.try_add_nodes(self.postponed_nodes, check=False): |
43
|
|
|
remaining_nodes.append(remaining_node) |
44
|
|
|
#remaining_nodes = self.server.try_add_nodes(self.postponed_nodes, check=False) |
45
|
|
|
if len(remaining_nodes): |
46
|
|
|
raise RuntimeError(f"There are remaining nodes: {remaining_nodes!r}") |
47
|
|
|
async for remaining_reference in self.server.try_add_references(self.postponed_refs): |
48
|
|
|
remaining_refs.append(remaining_reference) |
49
|
|
|
#remaining_refs = list(await self.server.try_add_references(self.postponed_refs)) |
50
|
|
|
if len(remaining_refs): |
51
|
|
|
raise RuntimeError(f"There are remaining refs: {remaining_refs!r}") |
52
|
|
|
|
53
|
|
|
|
54
|
|
|
async def fill_address_space(nodeservice): |
55
|
|
|
async with PostponeReferences(nodeservice) as server: |
56
|
|
|
await create_standard_address_space_Part3(server) |
57
|
|
|
await create_standard_address_space_Part4(server) |
58
|
|
|
await create_standard_address_space_Part5(server) |
59
|
|
|
await create_standard_address_space_Part8(server) |
60
|
|
|
await create_standard_address_space_Part9(server) |
61
|
|
|
await create_standard_address_space_Part10(server) |
62
|
|
|
await create_standard_address_space_Part11(server) |
63
|
|
|
await create_standard_address_space_Part13(server) |
64
|
|
|
|