private void GetInventoryCompleted(IAsyncResult iar)
        {
            GetInventoryDelegate icon = (GetInventoryDelegate)iar.AsyncState;
            InventoryCollection  icol = icon.EndInvoke(iar);

            InventoryResponse(icol);
        }
        public void RequestInventoryForUser(UUID userID, UUID session_id, InventoryReceiptCallback callback)
        {
            if (IsLocalStandaloneUser(userID))
            {
                base.RequestInventoryForUser(userID, callback);
                return;
            }

            // grid/hypergrid mode
            lock (m_RequestingInventory)
            {
                if (!m_RequestingInventory.ContainsKey(userID))
                {
                    m_RequestingInventory.Add(userID, callback);
                }
                else
                {
                    m_log.ErrorFormat("[HGrid INVENTORY SERVICE]: RequestInventoryForUser() - could  not find user profile for {0}", userID);
                    return;
                }
            }
            string invServer = GetUserInventoryURI(userID);

            m_log.InfoFormat(
                "[HGrid INVENTORY SERVICE]: Requesting inventory from {0}/GetInventory/ for user {1} ({2})",
                /*_inventoryServerUrl*/ invServer, userID, userID.Guid);

            try
            {
                //RestSessionObjectPosterResponse<Guid, InventoryCollection> requester
                //    = new RestSessionObjectPosterResponse<Guid, InventoryCollection>();
                //requester.ResponseCallback = InventoryResponse;

                //requester.BeginPostObject(invServer + "/GetInventory/", userID.Guid, session_id.ToString(), userID.ToString());
                GetInventoryDelegate d = GetInventoryAsync;
                d.BeginInvoke(invServer, userID, session_id, GetInventoryCompleted, d);
            }
            catch (WebException e)
            {
                if (StatsManager.SimExtraStats != null)
                {
                    StatsManager.SimExtraStats.AddInventoryServiceRetrievalFailure();
                }

                m_log.ErrorFormat("[HGrid INVENTORY SERVICE]: Request inventory operation failed, {0} {1}",
                                  e.Source, e.Message);

                // Well, let's synthesize one
                InventoryCollection icol = new InventoryCollection();
                icol.UserID  = userID;
                icol.Items   = new List <InventoryItemBase>();
                icol.Folders = new List <InventoryFolderBase>();
                InventoryFolderBase rootFolder = new InventoryFolderBase();
                rootFolder.ID    = UUID.Random();
                rootFolder.Owner = userID;
                icol.Folders.Add(rootFolder);
                InventoryResponse(icol);
            }
        }