* Added base thread pool based presence informing to the message server.
* Not ready yet for use.0.6.0-stable
parent
cb828c9824
commit
bf82148152
|
@ -30,6 +30,7 @@ using System.Net;
|
|||
using System.Net.Sockets;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Threading;
|
||||
//using System.Xml;
|
||||
using libsecondlife;
|
||||
using Nwc.XmlRpc;
|
||||
|
@ -59,6 +60,8 @@ namespace OpenSim.Grid.MessagingServer
|
|||
// Hashtable containing work units that need to be processed
|
||||
private Hashtable m_unProcessedWorkUnits = new Hashtable();
|
||||
|
||||
|
||||
|
||||
public MessageService(MessageServerConfig cfg)
|
||||
{
|
||||
m_cfg = cfg;
|
||||
|
@ -66,28 +69,6 @@ namespace OpenSim.Grid.MessagingServer
|
|||
|
||||
#region RegionComms Methods
|
||||
|
||||
/// <summary>
|
||||
/// Informs a region about an Agent
|
||||
/// </summary>
|
||||
/// <param name="TalkingAbout">User to talk about</param>
|
||||
/// <param name="UserToUpdate">User we're sending this too (contains the region)</param>
|
||||
public void SendRegionPresenceUpdate(UserPresenceData TalkingAbout, UserPresenceData UserToUpdate)
|
||||
{
|
||||
// TODO: Fill in pertenant Presence Data from 'TalkingAbout'
|
||||
|
||||
RegionProfileData whichRegion = UserToUpdate.regionData;
|
||||
//whichRegion.httpServerURI
|
||||
|
||||
Hashtable PresenceParams = new Hashtable();
|
||||
ArrayList SendParams = new ArrayList();
|
||||
SendParams.Add(PresenceParams);
|
||||
|
||||
m_log.Info("[PRESENCE]: Informing " + whichRegion.regionName + " at " + whichRegion.httpServerURI);
|
||||
// Send
|
||||
XmlRpcRequest RegionReq = new XmlRpcRequest("presence_update", SendParams);
|
||||
XmlRpcResponse RegionResp = RegionReq.Send(whichRegion.httpServerURI, 6000);
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
|
@ -152,7 +133,13 @@ namespace OpenSim.Grid.MessagingServer
|
|||
// we need to send out online status update, but the user is already subscribed
|
||||
|
||||
}
|
||||
SendRegionPresenceUpdate(friendpresence, userpresence);
|
||||
PresenceInformer friendlistupdater = new PresenceInformer();
|
||||
friendlistupdater.presence1 = friendpresence;
|
||||
friendlistupdater.presence2 = userpresence;
|
||||
WaitCallback cb = new WaitCallback(friendlistupdater.go);
|
||||
ThreadPool.QueueUserWorkItem(cb);
|
||||
|
||||
//SendRegionPresenceUpdate(friendpresence, userpresence);
|
||||
}
|
||||
if ((uFriendListItem.FriendPerms & (uint)FriendRights.CanSeeOnline) != 0)
|
||||
{
|
||||
|
@ -166,7 +153,14 @@ namespace OpenSim.Grid.MessagingServer
|
|||
// we need to send out online status update, but the user is already subscribed
|
||||
|
||||
}
|
||||
SendRegionPresenceUpdate(userpresence, friendpresence);
|
||||
PresenceInformer friendlistupdater = new PresenceInformer();
|
||||
friendlistupdater.presence1 = userpresence;
|
||||
friendlistupdater.presence2 = friendpresence;
|
||||
|
||||
WaitCallback cb2 = new WaitCallback(friendlistupdater.go);
|
||||
ThreadPool.QueueUserWorkItem(cb2);
|
||||
|
||||
//SendRegionPresenceUpdate(userpresence, friendpresence);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -280,7 +274,14 @@ namespace OpenSim.Grid.MessagingServer
|
|||
m_presences[AgentsNeedingNotification[i]] = friendd;
|
||||
|
||||
}
|
||||
SendRegionPresenceUpdate(AgentData, friendd);
|
||||
PresenceInformer friendlistupdater = new PresenceInformer();
|
||||
friendlistupdater.presence1 = AgentData;
|
||||
friendlistupdater.presence2 = friendd;
|
||||
|
||||
WaitCallback cb3 = new WaitCallback(friendlistupdater.go);
|
||||
ThreadPool.QueueUserWorkItem(cb3);
|
||||
|
||||
//SendRegionPresenceUpdate(AgentData, friendd);
|
||||
|
||||
|
||||
//removeBackReference(AgentID, AgentsNeedingNotification[i]);
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using System.Text;
|
||||
using libsecondlife;
|
||||
using Nwc.XmlRpc;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Framework.Console;
|
||||
using OpenSim.Framework.Data;
|
||||
using OpenSim.Framework.Servers;
|
||||
|
||||
namespace OpenSim.Grid.MessagingServer
|
||||
{
|
||||
public class PresenceInformer
|
||||
{
|
||||
public UserPresenceData presence1 = null;
|
||||
public UserPresenceData presence2 = null;
|
||||
private static readonly log4net.ILog m_log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
|
||||
|
||||
public PresenceInformer()
|
||||
{
|
||||
|
||||
}
|
||||
public void go(object o)
|
||||
{
|
||||
if (presence1 != null && presence2 != null)
|
||||
{
|
||||
SendRegionPresenceUpdate(presence1, presence2);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Informs a region about an Agent
|
||||
/// </summary>
|
||||
/// <param name="TalkingAbout">User to talk about</param>
|
||||
/// <param name="UserToUpdate">User we're sending this too (contains the region)</param>
|
||||
public void SendRegionPresenceUpdate(UserPresenceData TalkingAbout, UserPresenceData UserToUpdate)
|
||||
{
|
||||
// TODO: Fill in pertenant Presence Data from 'TalkingAbout'
|
||||
|
||||
RegionProfileData whichRegion = UserToUpdate.regionData;
|
||||
//whichRegion.httpServerURI
|
||||
|
||||
Hashtable PresenceParams = new Hashtable();
|
||||
ArrayList SendParams = new ArrayList();
|
||||
SendParams.Add(PresenceParams);
|
||||
|
||||
m_log.Info("[PRESENCE]: Informing " + whichRegion.regionName + " at " + whichRegion.httpServerURI);
|
||||
// Send
|
||||
XmlRpcRequest RegionReq = new XmlRpcRequest("presence_update", SendParams);
|
||||
XmlRpcResponse RegionResp = RegionReq.Send(whichRegion.httpServerURI, 6000);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue