Hi,
As you might know, I am currently working on implementing project sharing by
non-hosts. It currently works like this:
- Bob (a non-host) initiates a project negotiation with Alice (the host). If
Alice accepts it, the negotiation proceeds as normal.
- After having received the project, Alice distributes it to Carl and Dave (the
other session members) by starting a project negotiation with each of them,
just as if she shared the project in the first place (with the exception that
she omits sending it to Bob, who obviously has the project already).
When I initially tested this, something strange happened: while code changes
were properly synchronized between Alice, Carl and Dave afterwards, the changes
of Bob were completely ignored. After some analysis, I figured out that the
reason for this lied in the way Saros projects were identified: not only by
their name, but also by the JID of its "owner" - that is, the user from which
the project was received.
// IncomingProjectNegotiation.java:206
session.addProjectMapping(projectID, project, peer);
The problem here is that Bob thinks he "owns" the project (because he shared
it), while the other members of the session assume the owner to be Alice (as
she distributed the project to them). I guess this results in both sides
thinking they are doing changes to different projects, which prevents
synchronization.
In my (admittedly hacky) draft patch, I addressed this problem by just always
giving "ownership" to the host as far as project identification is concerned:
session.addProjectMapping(projectID, project, session.getHost().getJID());
This makes everything work as expected. Which makes me wonder: why does the
code have the notion of "project ownership" anyway, given that the host was the
only user that could share (and thus "own") a project? Is this a leftover of
the time where every user could share a project with everyone else directly? If
so, shouldn't this concept be removed from the codebase?
Regards,
Denis
------------------------------------------------------------------------------
One dashboard for servers and applications across Physical-Virtual-Cloud
Widest out-of-the-box monitoring support with 50+ applications
Performance metrics, stats and reports that give you Actionable Insights
Deep dive visibility with transaction tracing using APM Insight.
http://ad.doubleclick.net/ddm/clk/290420510;117567292;y
_______________________________________________
DPP-Devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/dpp-devel