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 <[email protected]> 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
[email protected]
https://lists.berlios.de/mailman/listinfo/opensim-dev
_______________________________________________
Opensim-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/opensim-dev
--
Justin Clark-Casey (justincc)
OSVW Consulting
http://justincc.org
http://twitter.com/justincc
_______________________________________________
Opensim-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/opensim-dev