Convert null presence data to a singleton as well. Standalone logins now work
parent
d8bab61af4
commit
ef8b2d2f90
|
@ -36,10 +36,15 @@ namespace OpenSim.Data.Null
|
||||||
{
|
{
|
||||||
public class NullPresenceData : IPresenceData
|
public class NullPresenceData : IPresenceData
|
||||||
{
|
{
|
||||||
|
private static NullPresenceData Instance;
|
||||||
|
|
||||||
Dictionary<UUID, PresenceData> m_presenceData = new Dictionary<UUID, PresenceData>();
|
Dictionary<UUID, PresenceData> m_presenceData = new Dictionary<UUID, PresenceData>();
|
||||||
|
|
||||||
public NullPresenceData(string connectionString, string realm)
|
public NullPresenceData(string connectionString, string realm)
|
||||||
{
|
{
|
||||||
|
if (Instance == null)
|
||||||
|
Instance = this;
|
||||||
|
|
||||||
//Console.WriteLine("[XXX] NullRegionData constructor");
|
//Console.WriteLine("[XXX] NullRegionData constructor");
|
||||||
// Let's stick in a test presence
|
// Let's stick in a test presence
|
||||||
PresenceData p = new PresenceData();
|
PresenceData p = new PresenceData();
|
||||||
|
@ -52,12 +57,18 @@ namespace OpenSim.Data.Null
|
||||||
|
|
||||||
public bool Store(PresenceData data)
|
public bool Store(PresenceData data)
|
||||||
{
|
{
|
||||||
|
if (Instance != this)
|
||||||
|
return Instance.Store(data);
|
||||||
|
|
||||||
m_presenceData[data.SessionID] = data;
|
m_presenceData[data.SessionID] = data;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public PresenceData Get(UUID sessionID)
|
public PresenceData Get(UUID sessionID)
|
||||||
{
|
{
|
||||||
|
if (Instance != this)
|
||||||
|
return Instance.Get(sessionID);
|
||||||
|
|
||||||
if (m_presenceData.ContainsKey(sessionID))
|
if (m_presenceData.ContainsKey(sessionID))
|
||||||
return m_presenceData[sessionID];
|
return m_presenceData[sessionID];
|
||||||
|
|
||||||
|
@ -66,6 +77,12 @@ namespace OpenSim.Data.Null
|
||||||
|
|
||||||
public void LogoutRegionAgents(UUID regionID)
|
public void LogoutRegionAgents(UUID regionID)
|
||||||
{
|
{
|
||||||
|
if (Instance != this)
|
||||||
|
{
|
||||||
|
Instance.LogoutRegionAgents(regionID);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
List<UUID> toBeDeleted = new List<UUID>();
|
List<UUID> toBeDeleted = new List<UUID>();
|
||||||
foreach (KeyValuePair<UUID, PresenceData> kvp in m_presenceData)
|
foreach (KeyValuePair<UUID, PresenceData> kvp in m_presenceData)
|
||||||
if (kvp.Value.RegionID == regionID)
|
if (kvp.Value.RegionID == regionID)
|
||||||
|
@ -77,6 +94,8 @@ namespace OpenSim.Data.Null
|
||||||
|
|
||||||
public bool ReportAgent(UUID sessionID, UUID regionID, string position, string lookAt)
|
public bool ReportAgent(UUID sessionID, UUID regionID, string position, string lookAt)
|
||||||
{
|
{
|
||||||
|
if (Instance != this)
|
||||||
|
return Instance.ReportAgent(sessionID, regionID, position, lookAt);
|
||||||
if (m_presenceData.ContainsKey(sessionID))
|
if (m_presenceData.ContainsKey(sessionID))
|
||||||
{
|
{
|
||||||
m_presenceData[sessionID].RegionID = regionID;
|
m_presenceData[sessionID].RegionID = regionID;
|
||||||
|
@ -90,6 +109,9 @@ namespace OpenSim.Data.Null
|
||||||
|
|
||||||
public bool SetHomeLocation(string userID, UUID regionID, Vector3 position, Vector3 lookAt)
|
public bool SetHomeLocation(string userID, UUID regionID, Vector3 position, Vector3 lookAt)
|
||||||
{
|
{
|
||||||
|
if (Instance != this)
|
||||||
|
return Instance.SetHomeLocation(userID, regionID, position, lookAt);
|
||||||
|
|
||||||
bool foundone = false;
|
bool foundone = false;
|
||||||
foreach (PresenceData p in m_presenceData.Values)
|
foreach (PresenceData p in m_presenceData.Values)
|
||||||
{
|
{
|
||||||
|
@ -107,6 +129,9 @@ namespace OpenSim.Data.Null
|
||||||
|
|
||||||
public PresenceData[] Get(string field, string data)
|
public PresenceData[] Get(string field, string data)
|
||||||
{
|
{
|
||||||
|
if (Instance != this)
|
||||||
|
return Instance.Get(field, data);
|
||||||
|
|
||||||
List<PresenceData> presences = new List<PresenceData>();
|
List<PresenceData> presences = new List<PresenceData>();
|
||||||
if (field == "UserID")
|
if (field == "UserID")
|
||||||
{
|
{
|
||||||
|
@ -152,6 +177,12 @@ namespace OpenSim.Data.Null
|
||||||
|
|
||||||
public void Prune(string userID)
|
public void Prune(string userID)
|
||||||
{
|
{
|
||||||
|
if (Instance != this)
|
||||||
|
{
|
||||||
|
Instance.Prune(userID);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
List<UUID> deleteSessions = new List<UUID>();
|
List<UUID> deleteSessions = new List<UUID>();
|
||||||
int online = 0;
|
int online = 0;
|
||||||
|
|
||||||
|
@ -173,6 +204,9 @@ namespace OpenSim.Data.Null
|
||||||
|
|
||||||
public bool Delete(string field, string data)
|
public bool Delete(string field, string data)
|
||||||
{
|
{
|
||||||
|
if (Instance != this)
|
||||||
|
return Delete(field, data);
|
||||||
|
|
||||||
List<UUID> presences = new List<UUID>();
|
List<UUID> presences = new List<UUID>();
|
||||||
if (field == "UserID")
|
if (field == "UserID")
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue