diff --git a/OpenSim/Data/IPresenceData.cs b/OpenSim/Data/IPresenceData.cs index ca661a2152..e5a8ebdffc 100644 --- a/OpenSim/Data/IPresenceData.cs +++ b/OpenSim/Data/IPresenceData.cs @@ -32,11 +32,11 @@ using OpenSim.Framework; namespace OpenSim.Data { - public class PresenceData + public struct PresenceData { - public UUID PrincipalID; - public UUID RegionID; - public Dictionary Data; + public UUID UUID; + public UUID currentRegion; + public Dictionary Data; } /// @@ -48,7 +48,8 @@ namespace OpenSim.Data PresenceData Get(UUID principalID); - bool SetDataItem(UUID principalID, string item, string value); + bool SetUserDataItem(UUID principalID, string item, string value); + bool SetRegionDataItem(UUID principalID, string item, string value); bool Delete(UUID regionID); } diff --git a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs index 4eb4a247ee..4e27e26e35 100644 --- a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs +++ b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs @@ -112,7 +112,7 @@ namespace OpenSim.Data.MySQL for (int i = 0 ; i < fields.Length ; i++) { cmd.Parameters.AddWithValue(fields[i], keys[i]); - terms.Add(fields[i] + " = ?" + fields[i]); + terms.Add("`" + fields[i] + "` = ?" + fields[i]); } string where = String.Join(" and ", terms.ToArray()); @@ -190,11 +190,26 @@ namespace OpenSim.Data.MySQL return DoQuery(cmd); } - public void Store(T row) + public bool Store(T row) { MySqlCommand cmd = new MySqlCommand(); string query = ""; + + return false; + } + + public bool Delete(string field, string val) + { + MySqlCommand cmd = new MySqlCommand(); + + cmd.CommandText = String.Format("delete from {0} where `{1}` = ?{1}", m_Realm, field); + cmd.Parameters.AddWithValue(field, val); + + if (ExecuteNonQuery(cmd) > 0) + return true; + + return false; } } } diff --git a/OpenSim/Framework/Servers/HttpServer/PollServiceWorkerThread.cs b/OpenSim/Framework/Servers/HttpServer/PollServiceWorkerThread.cs index ce324433c5..cc8bdb637b 100644 --- a/OpenSim/Framework/Servers/HttpServer/PollServiceWorkerThread.cs +++ b/OpenSim/Framework/Servers/HttpServer/PollServiceWorkerThread.cs @@ -28,33 +28,6 @@ using System; using System.Collections; using System.Collections.Generic; -/* - * Copyright (c) Contributors, http://opensimulator.org/ - * See CONTRIBUTORS.TXT for a full list of copyright holders. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * * Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * * Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * * Neither the name of the OpenSimulator Project nor the - * names of its contributors may be used to endorse or promote products - * derived from this software without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY - * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - using System.IO; using System.Text; using HttpServer; @@ -77,9 +50,7 @@ namespace OpenSim.Framework.Servers.HttpServer private readonly BaseHttpServer m_server; private BlockingQueue m_request; private bool m_running = true; - private int m_timeout = 250; - - + private int m_timeout = 250; public PollServiceWorkerThread(BaseHttpServer pSrv, int pTimeout) { @@ -135,4 +106,4 @@ namespace OpenSim.Framework.Servers.HttpServer m_request.Enqueue(pPollServiceHttpRequest); } } -} +} \ No newline at end of file diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index aeca7df2d6..2e15b86ec2 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs @@ -1266,7 +1266,7 @@ namespace OpenSim.Region.Framework.Scenes // allocations, and there is no more work to be done until someone logs in GC.Collect(); - m_log.Debug("[REGION]: Enabling Logins"); + m_log.DebugFormat("[REGION]: Enabling Logins for {0}", RegionInfo.RegionName); loginsdisabled = false; } } @@ -1276,24 +1276,25 @@ namespace OpenSim.Region.Framework.Scenes } catch (AccessViolationException e) { - m_log.Error("[Scene]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); + m_log.Error("[REGION]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); } //catch (NullReferenceException e) //{ - // m_log.Error("[Scene]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); + // m_log.Error("[REGION]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); //} catch (InvalidOperationException e) { - m_log.Error("[Scene]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); + m_log.Error("[REGION]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); } catch (Exception e) { - m_log.Error("[Scene]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); + m_log.Error("[REGION]: Failed with exception " + e.ToString() + " On Region: " + RegionInfo.RegionName); } finally { m_lastupdate = DateTime.UtcNow; } + maintc = Environment.TickCount - maintc; maintc = (int)(m_timespan * 1000) - maintc; diff --git a/OpenSim/Server/Handlers/Presence/PresenceServerPostHandler.cs b/OpenSim/Server/Handlers/Presence/PresenceServerPostHandler.cs index 9ca5120fdb..2558fa0aaf 100644 --- a/OpenSim/Server/Handlers/Presence/PresenceServerPostHandler.cs +++ b/OpenSim/Server/Handlers/Presence/PresenceServerPostHandler.cs @@ -94,6 +94,33 @@ namespace OpenSim.Server.Handlers.Presence byte[] Report(Dictionary request) { + PresenceInfo info = new PresenceInfo(); + info.Data = new Dictionary(); + + if (request["PrincipalID"] == null || request["RegionID"] == null) + return FailureResult(); + + if (!UUID.TryParse(request["PrincipalID"].ToString(), + out info.PrincipalID)) + return FailureResult(); + + if (!UUID.TryParse(request["RegionID"].ToString(), + out info.RegionID)) + return FailureResult(); + + foreach (KeyValuePair kvp in request) + { + if (kvp.Key == "METHOD" || + kvp.Key == "PrincipalID" || + kvp.Key == "RegionID") + continue; + + info.Data[kvp.Key] = kvp.Value; + } + + if (m_PresenceService.Report(info)) + return SuccessResult(); + return FailureResult(); } diff --git a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs b/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs index e047f71437..f86b453665 100644 --- a/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs +++ b/OpenSim/Services/Connectors/Inventory/InventoryServiceConnector.cs @@ -231,13 +231,14 @@ namespace OpenSim.Services.Connectors } catch (TimeoutException e) { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: GetFolderContent operation to {0} timed out {0} {1}.", m_ServerURI, - e.Source, e.Message); + m_log.ErrorFormat( + "[INVENTORY CONNECTOR]: GetFolderContent operation to {0} for {1} timed out {2} {3}.", + m_ServerURI, folderID, e.Source, e.Message); } catch (Exception e) { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: GetFolderContent operation failed, {0} {1} (old server?).", - e.Source, e.Message); + m_log.ErrorFormat("[INVENTORY CONNECTOR]: GetFolderContent operation failed for {0}, {1} {2} (old server?).", + folderID, e.Source, e.Message); } InventoryCollection nullCollection = new InventoryCollection(); @@ -256,8 +257,8 @@ namespace OpenSim.Services.Connectors } catch (Exception e) { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Add new inventory folder operation failed, {0} {1}", - e.Source, e.Message); + m_log.ErrorFormat("[INVENTORY CONNECTOR]: Add new inventory folder operation failed for {0} {1}, {2} {3}", + folder.Name, folder.ID, e.Source, e.Message); } return false; @@ -272,8 +273,8 @@ namespace OpenSim.Services.Connectors } catch (Exception e) { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Update inventory folder operation failed, {0} {1}", - e.Source, e.Message); + m_log.ErrorFormat("[INVENTORY CONNECTOR]: Update inventory folder operation failed for {0} {1}, {2} {3}", + folder.Name, folder.ID, e.Source, e.Message); } return false; @@ -307,8 +308,8 @@ namespace OpenSim.Services.Connectors } catch (Exception e) { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Move inventory folder operation failed, {0} {1}", - e.Source, e.Message); + m_log.ErrorFormat("[INVENTORY CONNECTOR]: Move inventory folder operation failed for {0} {1}, {2} {3}", + folder.Name, folder.ID, e.Source, e.Message); } return false; @@ -323,8 +324,8 @@ namespace OpenSim.Services.Connectors } catch (Exception e) { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Move inventory folder operation failed, {0} {1}", - e.Source, e.Message); + m_log.ErrorFormat("[INVENTORY CONNECTOR]: Purge inventory folder operation failed for {0} {1}, {2} {3}", + folder.Name, folder.ID, e.Source, e.Message); } return false; @@ -340,8 +341,8 @@ namespace OpenSim.Services.Connectors } catch (Exception e) { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Get folder items operation failed, {0} {1}", - e.Source, e.Message); + m_log.ErrorFormat("[INVENTORY CONNECTOR]: Get folder items operation failed for folder {0}, {1} {2}", + folderID, e.Source, e.Message); } return null; @@ -356,8 +357,8 @@ namespace OpenSim.Services.Connectors } catch (Exception e) { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Add new inventory item operation failed, {0} {1}", - e.Source, e.Message); + m_log.ErrorFormat("[INVENTORY CONNECTOR]: Add new inventory item operation failed for {0} {1}, {2} {3}", + item.Name, item.ID, e.Source, e.Message); } return false; @@ -372,8 +373,8 @@ namespace OpenSim.Services.Connectors } catch (Exception e) { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Update new inventory item operation failed, {0} {1}", - e.Source, e.Message); + m_log.ErrorFormat("[INVENTORY CONNECTOR]: Update new inventory item operation failed for {0} {1}, {2} {3}", + item.Name, item.ID, e.Source, e.Message); } return false; @@ -443,7 +444,7 @@ namespace OpenSim.Services.Connectors } catch (Exception e) { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Delete inventory item operation failed, {0} {1}", + m_log.ErrorFormat("[INVENTORY CONNECTOR]: Delete inventory items operation failed, {0} {1}", e.Source, e.Message); } @@ -475,7 +476,7 @@ namespace OpenSim.Services.Connectors } catch (Exception e) { - m_log.ErrorFormat("[INVENTORY CONNECTOR]: Query inventory item operation failed, {0} {1}", + m_log.ErrorFormat("[INVENTORY CONNECTOR]: Query inventory folder operation failed, {0} {1}", e.Source, e.Message); } @@ -576,9 +577,6 @@ namespace OpenSim.Services.Connectors } callback(folders, items); - } - - } } diff --git a/OpenSim/Services/Interfaces/IPresenceService.cs b/OpenSim/Services/Interfaces/IPresenceService.cs index d33b6bc394..aa1c5bfb40 100644 --- a/OpenSim/Services/Interfaces/IPresenceService.cs +++ b/OpenSim/Services/Interfaces/IPresenceService.cs @@ -31,7 +31,15 @@ using OpenMetaverse; namespace OpenSim.Services.Interfaces { + public class PresenceInfo + { + public UUID PrincipalID; + public UUID RegionID; + public Dictionary Data; + } + public interface IPresenceService { + bool Report(PresenceInfo presence); } } diff --git a/OpenSim/Services/PresenceService/PresenceService.cs b/OpenSim/Services/PresenceService/PresenceService.cs index ba8eec866c..215746274b 100644 --- a/OpenSim/Services/PresenceService/PresenceService.cs +++ b/OpenSim/Services/PresenceService/PresenceService.cs @@ -49,5 +49,19 @@ namespace OpenSim.Services.PresenceService : base(config) { } + + public bool Report(PresenceInfo presence) + { + PresenceData p = new PresenceData(); + p.Data = new Dictionary(); + + p.UUID = presence.PrincipalID; + p.currentRegion = presence.RegionID; + + foreach (KeyValuePair kvp in presence.Data) + p.Data[kvp.Key] = kvp.Value; + + return false; + } } }