Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1503)

Unified Diff: mojo/public/python/mojo/bindings/serialization.py

Issue 579383002: Revert of mojo: Add deserialization to python structs. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/public/python/mojo/bindings/serialization.py
diff --git a/mojo/public/python/mojo/bindings/serialization.py b/mojo/public/python/mojo/bindings/serialization.py
index dd14a7db45bcb8744c0bb39c438653cdffae0857..cb68d4a2d2429817614af124c59e4ecb7d3bf573 100644
--- a/mojo/public/python/mojo/bindings/serialization.py
+++ b/mojo/public/python/mojo/bindings/serialization.py
@@ -16,42 +16,28 @@
pass
-class DeserializationException(Exception):
- """Error when strying to deserialize a struct."""
- pass
-
-
class Serialization(object):
"""
Helper class to serialize/deserialize a struct.
"""
def __init__(self, groups):
+ self._groups = groups
self.version = _GetVersion(groups)
- self._groups = groups
main_struct = _GetStruct(groups)
self.size = HEADER_STRUCT.size + main_struct.size
self._struct_per_version = {
- self.version: main_struct,
- }
- self._groups_per_version = {
- self.version: groups,
+ self.version: main_struct,
}
def _GetMainStruct(self):
return self._GetStruct(self.version)
- def _GetGroups(self, version):
- # If asking for a version greater than the last known.
- version = min(version, self.version)
- if version not in self._groups_per_version:
- self._groups_per_version[version] = _FilterGroups(self._groups, version)
- return self._groups_per_version[version]
-
def _GetStruct(self, version):
- # If asking for a version greater than the last known.
+ # If asking for a greater ver
version = min(version, self.version)
if version not in self._struct_per_version:
- self._struct_per_version[version] = _GetStruct(self._GetGroups(version))
+ self._struct_per_version[version] = _GetStruct(_FilterGroups(self._groups,
+ version))
return self._struct_per_version[version]
def Serialize(self, obj, handle_offset):
@@ -78,18 +64,6 @@
self._GetMainStruct().pack_into(data, HEADER_STRUCT.size, *to_pack)
return (data, handles)
- def Deserialize(self, fields, data, handles):
- (_, version) = HEADER_STRUCT.unpack_from(data)
- version_struct = self._GetStruct(version)
- entitities = version_struct.unpack_from(data, HEADER_STRUCT.size)
- filtered_groups = self._GetGroups(version)
- position = HEADER_STRUCT.size
- for (group, value) in zip(filtered_groups, entitities):
- position = position + NeededPaddingForAlignment(position,
- group.GetByteSize())
- fields.update(group.Deserialize(value, data[position:], handles))
- position += group.GetByteSize()
-
def NeededPaddingForAlignment(value, alignment=8):
"""Returns the padding necessary to align value with the given alignment."""
@@ -103,7 +77,7 @@
def _FilterGroups(groups, version):
- return [group for group in groups if group.GetVersion() < version]
+ return [group for group in groups if group.version < version]
def _GetStruct(groups):
« no previous file with comments | « mojo/public/python/mojo/bindings/reflection.py ('k') | mojo/python/tests/bindings_serialization_deserialization_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698