From f3dbddb6e1e8d4096eb705f6f2eb534a05ebf983 Mon Sep 17 00:00:00 2001 From: izzy lyseggen Date: Wed, 25 Nov 2020 11:30:32 +0000 Subject: [PATCH] feat(transports): memory transport --- speckle/transports/memory.py | 37 ++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 speckle/transports/memory.py diff --git a/speckle/transports/memory.py b/speckle/transports/memory.py new file mode 100644 index 0000000..b9188ba --- /dev/null +++ b/speckle/transports/memory.py @@ -0,0 +1,37 @@ +import os +from speckle.logging.exceptions import SpeckleException +from speckle.transports.abstract_transport import AbstractTransport + + +class MemoryTransport(AbstractTransport): + _name: str = "Memory" + objects: dict = {} + saved_object_count: int = 0 + + def __init__(self) -> None: + pass + + def __repr__(self) -> str: + return f"MemoryTransport(objects: {len(self.objects)})" + + def save_object(self, id: str, serialized_object: str) -> None: + self.objects[id] = serialized_object + + self.saved_object_count += 1 + + def save_object_from_transport( + self, id: str, source_transport: AbstractTransport + ) -> None: + raise NotImplementedError + + def get_object(self, id: str) -> str: + if id in self.objects: + return object[id] + else: + raise SpeckleException("No object found in this memory transport") + + def begin_write(self) -> None: + self.saved_object_count = 0 + + def end_write(self) -> None: + pass