Reworked sdp

This commit is contained in:
2019-11-02 14:17:10 +01:00
parent 8107e149b9
commit b12204360e
5 changed files with 1039 additions and 152 deletions
+13 -6
View File
@@ -20,8 +20,8 @@ def json_default_converter(o):
@dataclass()
class SerializerContext:
user_name: str
origin: str
user_name: str = None
origin: str = None
class Serializer:
@@ -37,7 +37,7 @@ class Serializer:
# add builtin serializers
self.register(EventSerializer())
self.register(PickleSerializer())
self.register(StateSerializer())
self.register(ConceptSerializer())
def register(self, serializer):
@@ -205,11 +205,12 @@ class ObjectSerializer(BaseSerializer):
class PickleSerializer(BaseSerializer):
def __init__(self):
BaseSerializer.__init__(self, "P", 1)
def __init__(self, predicate, name="P", version=1):
BaseSerializer.__init__(self, name, version)
self.predicate = predicate
def match(self, obj):
return BaseSerializer.get_full_qualified_name(obj) == "sdp.sheerkaDataProvider.State"
return self.predicate(obj)
def dump(self, stream, obj, context):
stream.write(pickle.dumps(obj))
@@ -220,6 +221,12 @@ class PickleSerializer(BaseSerializer):
return pickle.loads(stream.read())
class StateSerializer(PickleSerializer):
def __init__(self, ):
PickleSerializer.__init__(self, lambda obj: BaseSerializer.get_full_qualified_name(
obj) == "sdp.sheerkaDataProvider.State", "S", 1)
class ConceptSerializer(ObjectSerializer):
def __init__(self):
ObjectSerializer.__init__(self, "core.concept.Concept", "C", 1)