From 06ecdf1967848e3f0c6b6f98aba61c7ad099f65d Mon Sep 17 00:00:00 2001 From: Melanie Date: Wed, 18 Nov 2009 08:21:28 +0000 Subject: [PATCH] Tweak presence handling and whip up a database connector and handler for testign the new generic table handling --- OpenSim/Data/IPresenceData.cs | 4 +-- .../Data/MySQL/MySQLGenericTableHandler.cs | 4 ++- .../Presence/PresenceServerPostHandler.cs | 27 +++++++++++++++++++ .../Services/Interfaces/IPresenceService.cs | 2 +- .../PresenceService/PresenceService.cs | 9 +++++++ 5 files changed, 42 insertions(+), 4 deletions(-) diff --git a/OpenSim/Data/IPresenceData.cs b/OpenSim/Data/IPresenceData.cs index 891b5905aa..020ba5d10e 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 UUID; public UUID currentRegion; - public Dictionary Data; + public Dictionary Data; } /// diff --git a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs index 4eb4a247ee..1521dc73f6 100644 --- a/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs +++ b/OpenSim/Data/MySQL/MySQLGenericTableHandler.cs @@ -190,11 +190,13 @@ 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; } } } 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/Interfaces/IPresenceService.cs b/OpenSim/Services/Interfaces/IPresenceService.cs index 6ceeb45f65..aa1c5bfb40 100644 --- a/OpenSim/Services/Interfaces/IPresenceService.cs +++ b/OpenSim/Services/Interfaces/IPresenceService.cs @@ -35,7 +35,7 @@ namespace OpenSim.Services.Interfaces { public UUID PrincipalID; public UUID RegionID; - public Dictionary Data; + public Dictionary Data; } public interface IPresenceService diff --git a/OpenSim/Services/PresenceService/PresenceService.cs b/OpenSim/Services/PresenceService/PresenceService.cs index 8931a26130..215746274b 100644 --- a/OpenSim/Services/PresenceService/PresenceService.cs +++ b/OpenSim/Services/PresenceService/PresenceService.cs @@ -52,6 +52,15 @@ namespace OpenSim.Services.PresenceService 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; } }