Merge branch 'dev' into syncstats
commit
d5acb9a214
|
@ -208,16 +208,16 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
|||
|
||||
foreach (string bucketName in m_propertyBucketNames)
|
||||
{
|
||||
if (m_isSyncRelay || part.HasPropertyUpdatedLocallyInGivenBucket(bucketName))
|
||||
//if (m_isSyncRelay || part.HasPropertyUpdatedLocallyInGivenBucket(bucketName))
|
||||
if(ToSendoutUpdate(part, bucketName))
|
||||
{
|
||||
lock (m_primUpdateLocks[bucketName])
|
||||
{
|
||||
//m_log.Debug("Queueing to bucket " + bucketName + " with part " + part.Name + ", " + part.UUID);
|
||||
m_log.Debug("Queueing to bucket " + bucketName + " with part " + part.Name + ", " + part.UUID);
|
||||
m_primUpdates[bucketName][part.UUID] = part;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -718,6 +718,8 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
|||
|
||||
private delegate void PrimUpdatePerBucketSender(string bucketName, List<SceneObjectPart> primUpdates);
|
||||
private Dictionary<string, PrimUpdatePerBucketSender> m_primUpdatesPerBucketSender = new Dictionary<string, PrimUpdatePerBucketSender>();
|
||||
//Timestamps that record the last time each any updates have been sent out for a given bucket
|
||||
private Dictionary<string, long> m_lastUpdateSentTime = new Dictionary<string, long>();
|
||||
|
||||
private object m_updateScenePresenceLock = new object();
|
||||
private Dictionary<UUID, ScenePresence> m_presenceUpdates = new Dictionary<UUID, ScenePresence>();
|
||||
|
@ -745,6 +747,8 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
|||
//Going forward, we may serialize the properties differently, e.g. using OSDMap
|
||||
private void PrimUpdatesGeneralBucketSender(string bucketName, List<SceneObjectPart> primUpdates)
|
||||
{
|
||||
UpdateBucektLastSentTime(bucketName);
|
||||
|
||||
Dictionary<UUID, SceneObjectGroup> updatedObjects = new Dictionary<UUID, SceneObjectGroup>();
|
||||
foreach (SceneObjectPart part in primUpdates)
|
||||
{
|
||||
|
@ -758,10 +762,13 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
|||
lock (m_stats) m_statSOGBucketOut++;
|
||||
SendObjectUpdateToRelevantSyncConnectors(sog, syncMsg);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void PrimUpdatesPhysicsBucketSender(string bucketName, List<SceneObjectPart> primUpdates)
|
||||
{
|
||||
UpdateBucektLastSentTime(bucketName);
|
||||
|
||||
foreach (SceneObjectPart updatedPart in primUpdates)
|
||||
{
|
||||
updatedPart.UpdateTaintedBucketSyncInfo(bucketName, DateTime.Now.Ticks);
|
||||
|
@ -808,7 +815,39 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
|||
lock (m_stats) m_statPhysBucketOut++;
|
||||
SendObjectUpdateToRelevantSyncConnectors(updatedPart, syncMsg);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void UpdateBucektLastSentTime(string bucketName)
|
||||
{
|
||||
long timeStamp = DateTime.Now.Ticks;
|
||||
/*
|
||||
if (m_lastUpdateSentTime.ContainsKey(bucketName))
|
||||
{
|
||||
m_lastUpdateSentTime[bucketName] = timeStamp;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_lastUpdateSentTime.Add(bucketName, timeStamp);
|
||||
}
|
||||
* */
|
||||
m_lastUpdateSentTime[bucketName] = timeStamp;
|
||||
}
|
||||
|
||||
private bool ToSendoutUpdate(SceneObjectPart part, string bucketName)
|
||||
{
|
||||
if (!m_isSyncRelay)
|
||||
{
|
||||
return part.HasPropertyUpdatedLocallyInGivenBucket(bucketName);
|
||||
}
|
||||
|
||||
//if this is a relay node, forward out the updates that have not been sent out since lastUpdateSentTime
|
||||
if (m_lastUpdateSentTime[bucketName] <= part.BucketSyncInfoList[bucketName].LastUpdateTimeStamp)
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
//If nothing configured in the config file, this is the default settings for grouping properties into different bucket
|
||||
private void PopulatePropertyBuketMapByDefault()
|
||||
{
|
||||
|
@ -823,6 +862,9 @@ namespace OpenSim.Region.CoreModules.RegionSync.RegionSyncModule
|
|||
m_primUpdatesPerBucketSender.Add("General", PrimUpdatesGeneralBucketSender);
|
||||
m_primUpdatesPerBucketSender.Add("Physics", PrimUpdatesPhysicsBucketSender);
|
||||
|
||||
m_lastUpdateSentTime.Add("General", 0);
|
||||
m_lastUpdateSentTime.Add("Physics", 0);
|
||||
|
||||
//Mapping properties to buckets.
|
||||
foreach (SceneObjectPartProperties property in Enum.GetValues(typeof(SceneObjectPartProperties)))
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue