[sldev] [ogpx] Snowglobe on OpenSim grids
Carlo Wood
carlo at alinoe.com
Thu Dec 10 05:33:19 PST 2009
> On Wed, Dec 9, 2009 at 11:17 AM, Joshua Bell <josh at lindenlab.com> wrote:
> And replace it with:
>
> if (has_cap_for_foo)
> use_cap_for_foo();
> else
> use_hardcoded_endpoint_for_foo();
This would still fail on opensim, since it would do the same
as it is doing now-- which doesn't work.
[...]
> If we determine that the cap needs to change - perhaps the prototyped
> design can't be adopted as-is by Linden for some reason, or the cap is
> rev'd in some incompatible way (even given the version skew-combating
> super-powers of LLSD), then the client code would be updated to be:
>
> if (has_cap_for_foo2)
> use_cap_for_foo2();
> else if (has_cap_for_foo)
> use_cap_for_foo();
> else
> use_hardcoded_endpoint_for_foo();
What about using feature negotiation?
We only have to agree on it, implement it once, and we'll have forever
a powerful way to negotiate ANYTHING we might need in the future
where the client-server protocol is a function of -basically- version
numbers of each.
Instead of
if (has_cap_for_foo6)
use_cap_for_foo6();
else if (has_cap_for_foo5)
use_cap_for_foo5();
else if (has_cap_for_foo4)
use_cap_for_foo4();
else if (has_cap_for_foo3)
use_cap_for_foor3();
else if (has_cap_for_foo2)
use_cap_for_foo2();
else if (has_cap_for_foo)
use_cap_for_foo();
else
use_hardcoded_endpoint_for_foo();
where each "has_cap_*" needs to be probed separately,
you could just directly negotiate whatever is needed (which is
so powerful, you can change the protocol to ANYthing, so
there isn't really a need for examples).
> (And ideally the client code that embodies this logic is nicely
> encapsulated so that these tests aren't repeated. Regardless, this is an
> extremely common pattern for exactly this capability-probing situation.)
>
> Suzy asks: "Can we make a simple fix for OpenSim now that will still work
> with the existing Linden grid, irrespective of vwrap?"
>
> I would suggest: yes!
She asked 'now'... which means with the current opensim version.
> (1) Implement the cap on the server side
> (2) Implement the client side code to use it
> (3) Share the design here/JIRA for community review
> (4) Push the patch to Snowglobe via JIRA
> (5) If the client needs to support a different cap in the future e.g. for
> Linden, the model above would be followed.
How would that cause map the work on opensim?
The only way to make it work now on opensim is, in pseudo code:
if (has_cap_for_foo)
use_cap_for_foo();
else if (second_life_grid)
use_hardcoded_endpoint_for_foo();
else
use_old_map_style();
--
Carlo Wood <carlo at alinoe.com>
More information about the SLDev
mailing list