Exemple #1
0
 def _read_class_def(self):
     type_name = self._read_object()
     num_fields = self._read_object()
     fields = []
     for i in range(0, num_fields):
         fields.append(self._read_object())
     self._classdefs.append(cls_factory(type_name, fields))
Exemple #2
0
    def _read_map(self):
        code = self._read(1)

        if code == b't':
            type_len = unpack('>H', self._read(2))[0]
            if type_len > 0:
                # a typed map deserializes to an object
                result = cls_factory(self._read(type_len))()
            else:
                result = {}

            code = self._read(1)
        else:
            # untyped maps deserialize to a dict
            result = {}

        self._refs.append(result)

        fields = {}
        while code != b'z':
            key, value = self._read_keyval(code)

            if isinstance(result, Object):
                fields[str(key)] = value
            else:
                fields[type(key)] = value

            code = self._read(1)

        if isinstance(result, Object):
            result.__setstate__(fields)
        else:
            result.update(fields)

        return result
Exemple #3
0
 def _read_class_def(self):
     type_name = self._read_object()
     num_fields = self._read_object()
     fields = []
     for i in range(0, num_fields):
         fields.append(self._read_object())
     self._classdefs.append(cls_factory(type_name, fields))
Exemple #4
0
    def _read_map(self):
        code = self._read(1)

        if code == b't':
            type_len = unpack('>H', self._read(2))[0]
            if type_len > 0:
                # a typed map deserializes to an object
                result = cls_factory(self._read(type_len))()
            else:
                result = {}

            code = self._read(1)
        else:
            # untyped maps deserialize to a dict
            result = {}

        self._refs.append(result)

        fields = {}
        while code != b'z':
            key, value = self._read_keyval(code)

            if isinstance(result, Object):
                fields[str(key)] = value
            else:
                fields[key] = value

            code = self._read(1)

        if isinstance(result, Object):
            result.__setstate__(fields)
        else:
            result.update(fields)

        return result
Exemple #5
0
    def _read_map(self, code=None):
        if code is None:
            code = self._read(1)

        if code == b't':
            type_len = unpack('>H', self._read(2))[0]
            if type_len > 0:
                # a typed map deserializes to an object
                result = cls_factory(self._read(type_len))()
            else:
                result = {}

            code = self._read(1)
        else:
            # untyped maps deserialize to a dict
            result = {}
            if code == b'M':
                # Read and discard type
                try:
                    self._read_object()
                except ListMapTerminator:
                    code = b'Z'
                code = self._read(1)

        self._refs.append(result)

        fields = {}

        while code not in (b'z', b'Z'):
            key, value = self._read_keyval(code)

            if key == {}:
                return result

            if isinstance(result, Object):
                fields[str(key)] = value
            else:
                fields[key] = value

            code = self._read(1)

        if isinstance(result, Object):
            result.__setstate__(fields)
        else:
            result.update(fields)

        return result
Exemple #6
0
    def _read_map(self, code=None):
        if code is None:
            code = self._read(1)

        if code == b't':
            type_len = unpack('>H', self._read(2))[0]
            if type_len > 0:
                # a typed map deserializes to an object
                result = cls_factory(self._read(type_len))()
            else:
                result = {}

            code = self._read(1)
        else:
            # untyped maps deserialize to a dict
            result = {}
            if code == b'M':
                # Read and discard type
                try:
                    self._read_object()
                except ListMapTerminator:
                    code = b'Z'
                code = self._read(1)

        self._refs.append(result)

        fields = {}

        while code not in (b'z', b'Z'):
            key, value = self._read_keyval(code)

            if key == {}:
                return result

            if isinstance(result, Object):
                fields[str(key)] = value
            else:
                fields[key] = value

            code = self._read(1)

        if isinstance(result, Object):
            result.__setstate__(fields)
        else:
            result.update(fields)

        return result
Exemple #7
0
from dataclasses import dataclass

from pyhessian.client import HessianProxy
from pyhessian.protocol import cls_factory

NiceObject = cls_factory(name='com.gyxr.adam.dataservice.model.BrandItem',
                         fields=['id', 'name'])

nice_object = NiceObject(id="1", name='中文')

service = HessianProxy("http://localhost:8080/rmi/sync/brand")
service.save(nice_object)