[Opensim-dev] Proposal: notify clients when Robust changes a user's inventory
Justin Clark-Casey
jjustincc at googlemail.com
Fri Mar 14 00:48:41 UTC 2014
On first consideration, I can't say that I'm at all keen on overloading GridInstantMessage as am internal service ->
simulator protocol above its existing overloading. It's going to have a bunch of irrelevant fields (which is already
the case for the existing LL overloading) and seems to me a bad format to extend to internal operations (I know this is
de-facto done already but at least that's just simulator <-> simulator).
What are the alternatives? Specific OSDMap messages sent from service -> simulator where the simulator has a connector
to receive that message and trigger the bulk update?
Also, I assume this operation wouldn't involve maintaining any state. As you're doubtless aware, it's imperative that
services are kept stateless. Perhaps if there was a need for state this could be isolated as a complete independent
service.
I think this would be the first case of service -> simulator comms.
On 13/03/14 19:55, Melanie wrote:
> In the past we have studiously acoided abusing thr instant message protocol as a message transport.
> The Linden protocols use the InstantMessageDialog for similar purposes, but way back when it was decided to not make the same mistake.
> So while notifying the client of such inventory changes is a good idea, using instant messages as the protocol may not be agreeable to all.
> Personally, I'm not opposed to it.
>
> Melanie
>
> On 13 Mar 2014, at 18:16, Oren Hurvitz <orenh at kitely.com> wrote:
>
> Sometimes Robust makes changes to a user's inventory on its own initiative
> (i.e., not as the result of a client request). E.g., this happens when it
> creates the "My Suitcase" folder. When that happens we should notify the
> client, so that the new item or folder will be visible in the inventory
> window immediately. Otherwise the user won't be able to see the changes
> until they restart the client, which is confusing and frustrating.
>
> I want to use the existing IM service to do this, since it already has 95%
> of the necessary code. It already has services in place for Robust to find
> which region the user is in, and send a message to that simulator. It can
> even do this if the user is in a different grid.
>
> My proposal is to define a special format of GridInstantMessage, which tells
> the simulator to send SendBulkUpdateInventory() to the client. The data
> about which specific folder/item were added will be encoded in the field
> 'binaryBucket'. OpenSim will recognize this new type of message, and call
> client.SendBulkUpdateInventory().
>
> This mechanism will work cleanly with older simulators: I'll remove a key
> field from GridInstantMessage, e.g. 'from_agent_id', and this will cause old
> simulators to ignore the message. This can be seen in
> MessageTransferModule.processXMLRPCGridInstantMessage(): the removal of a
> required field causes the simulator to ignore the message. Only new
> simulators will recognize and handle this new type of message.
>
> Any comments or objections? Is there a simpler way to do this?
>
> Oren
>
>
>
> --
> View this message in context: http://opensim-dev.2196679.n2.nabble.com/Proposal-notify-clients-when-Robust-changes-a-user-s-inventory-tp7579018.html
> Sent from the opensim-dev mailing list archive at Nabble.com.
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev
>
>
> _______________________________________________
> Opensim-dev mailing list
> Opensim-dev at lists.berlios.de
> https://lists.berlios.de/mailman/listinfo/opensim-dev
>
--
Justin Clark-Casey (justincc)
OSVW Consulting
http://justincc.org
http://twitter.com/justincc
More information about the Opensim-dev
mailing list