def to_data(workspace): context = _ContextSerialization(0, _TypeSerializer.get_version_table()) context.write_uint(0) # Version context.write_using_serializer(dictionary_serializer, _TypeSerializer.get_version_table()) subcontext = context.create_sub_context() subcontext.payload["Atom"] = {} subcontext.write_using_serializer(workspace_serializer, workspace) context.write_using_serializer(atom_dictionary_serializer, subcontext.payload["Atom"]) context.write_bytes(subcontext.to_array()) return zlib.compress(context.to_array())
def save_workspace(self, workspace, file): context = _ContextSerialization(0, _TypeSerializer.get_version_table()) context.write_uint(0) # Version context.write_using_serializer(dictionary_serializer, _TypeSerializer.get_version_table()) subcontext = context.create_sub_context() subcontext.payload["Atom"] = {} subcontext.write_using_serializer(workspace_serializer, workspace) context.write_using_serializer(atom_dictionary_serializer, subcontext.payload["Atom"]) context.write_bytes(subcontext.to_array()) to_write = context.to_array() compressed_data = zlib.compress(to_write) file.write(compressed_data) self.send_notification(NotificationTypes.success, "Workspace saved")
def get_plugin_data(self): """Return data required for interface to serialize message requests.""" plugin_id = self._network._plugin_id session_id = self._network._session_id version_table = _TypeSerializer.get_version_table() data = { 'plugin_id': plugin_id, 'session_id': session_id, 'version_table': version_table } return data
def from_data(data): data = zlib.decompress(data) context = _ContextDeserialization(data, _TypeSerializer.get_version_table()) context.read_uint() file_version_table = context.read_using_serializer(dictionary_serializer) version_table = _TypeSerializer.get_best_version_table(file_version_table) context = _ContextDeserialization(data, version_table) context.read_uint() context.read_using_serializer(dictionary_serializer) context.payload["Atom"] = context.read_using_serializer( atom_dictionary_serializer) return context.read_using_serializer(workspace_serializer)
def __on_client_connection(self, session_id, version_table): main_conn_net, process_conn_net = Pipe() main_conn_proc, process_conn_proc = Pipe() session = Network._Session(session_id, self._network, self._process_manager, main_conn_net, main_conn_proc) process = Process(target=_Plugin._launch_plugin, args=(self._plugin_class, session_id, process_conn_net, process_conn_proc, _Plugin.__serializer, _Plugin._plugin_id, version_table, _TypeSerializer.get_version_table(), Logs._is_verbose(), _Plugin._custom_data)) process.start() session.plugin_process = process self._sessions[session_id] = session Logs.debug("Registered new session:", session_id)
def load_workspace(self, data): context = _ContextDeserialization(data, _TypeSerializer.get_version_table()) context.read_uint() file_version_table = context.read_using_serializer( dictionary_serializer) version_table = _TypeSerializer.get_best_version_table( file_version_table) context = _ContextDeserialization(data, version_table) context.read_uint() context.read_using_serializer(dictionary_serializer) context.payload["Atom"] = context.read_using_serializer( atom_dictionary_serializer) workspace = context.read_using_serializer(workspace_serializer) self.update_workspace(workspace) self.send_notification(NotificationTypes.success, "Workspace loaded")