Exemplo n.º 1
0
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")
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
 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")