Merge branch 'avination' into careminster
Conflicts: OpenSim/Framework/Servers/HttpServer/PollServiceWorkerThread.csavinationmerge
commit
05cf51cbbd
|
@ -1331,32 +1331,40 @@ namespace OpenSim.Data.MySQL
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
private static TaskInventoryItem BuildItem(IDataReader row)
|
private static TaskInventoryItem BuildItem(IDataReader row)
|
||||||
{
|
{
|
||||||
TaskInventoryItem taskItem = new TaskInventoryItem();
|
try
|
||||||
|
{
|
||||||
|
TaskInventoryItem taskItem = new TaskInventoryItem();
|
||||||
|
|
||||||
taskItem.ItemID = DBGuid.FromDB(row["itemID"]);
|
taskItem.ItemID = DBGuid.FromDB(row["itemID"]);
|
||||||
taskItem.ParentPartID = DBGuid.FromDB(row["primID"]);
|
taskItem.ParentPartID = DBGuid.FromDB(row["primID"]);
|
||||||
taskItem.AssetID = DBGuid.FromDB(row["assetID"]);
|
taskItem.AssetID = DBGuid.FromDB(row["assetID"]);
|
||||||
taskItem.ParentID = DBGuid.FromDB(row["parentFolderID"]);
|
taskItem.ParentID = DBGuid.FromDB(row["parentFolderID"]);
|
||||||
|
|
||||||
taskItem.InvType = Convert.ToInt32(row["invType"]);
|
taskItem.InvType = Convert.ToInt32(row["invType"]);
|
||||||
taskItem.Type = Convert.ToInt32(row["assetType"]);
|
taskItem.Type = Convert.ToInt32(row["assetType"]);
|
||||||
|
|
||||||
taskItem.Name = (String)row["name"];
|
taskItem.Name = (String)row["name"];
|
||||||
taskItem.Description = (String)row["description"];
|
taskItem.Description = (String)row["description"];
|
||||||
taskItem.CreationDate = Convert.ToUInt32(row["creationDate"]);
|
taskItem.CreationDate = Convert.ToUInt32(row["creationDate"]);
|
||||||
taskItem.CreatorIdentification = (String)row["creatorID"];
|
taskItem.CreatorIdentification = (String)row["creatorID"];
|
||||||
taskItem.OwnerID = DBGuid.FromDB(row["ownerID"]);
|
taskItem.OwnerID = DBGuid.FromDB(row["ownerID"]);
|
||||||
taskItem.LastOwnerID = DBGuid.FromDB(row["lastOwnerID"]);
|
taskItem.LastOwnerID = DBGuid.FromDB(row["lastOwnerID"]);
|
||||||
taskItem.GroupID = DBGuid.FromDB(row["groupID"]);
|
taskItem.GroupID = DBGuid.FromDB(row["groupID"]);
|
||||||
|
|
||||||
taskItem.NextPermissions = Convert.ToUInt32(row["nextPermissions"]);
|
taskItem.NextPermissions = Convert.ToUInt32(row["nextPermissions"]);
|
||||||
taskItem.CurrentPermissions = Convert.ToUInt32(row["currentPermissions"]);
|
taskItem.CurrentPermissions = Convert.ToUInt32(row["currentPermissions"]);
|
||||||
taskItem.BasePermissions = Convert.ToUInt32(row["basePermissions"]);
|
taskItem.BasePermissions = Convert.ToUInt32(row["basePermissions"]);
|
||||||
taskItem.EveryonePermissions = Convert.ToUInt32(row["everyonePermissions"]);
|
taskItem.EveryonePermissions = Convert.ToUInt32(row["everyonePermissions"]);
|
||||||
taskItem.GroupPermissions = Convert.ToUInt32(row["groupPermissions"]);
|
taskItem.GroupPermissions = Convert.ToUInt32(row["groupPermissions"]);
|
||||||
taskItem.Flags = Convert.ToUInt32(row["flags"]);
|
taskItem.Flags = Convert.ToUInt32(row["flags"]);
|
||||||
|
|
||||||
return taskItem;
|
return taskItem;
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
m_log.ErrorFormat("[MYSQL DB]: Error reading task inventory: itemID was {0}, primID was {1}", row["itemID"].ToString(), row["primID"].ToString());
|
||||||
|
throw;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static RegionSettings BuildRegionSettings(IDataReader row)
|
private static RegionSettings BuildRegionSettings(IDataReader row)
|
||||||
|
|
|
@ -51,6 +51,7 @@ namespace OpenSim.Framework
|
||||||
protected object m_senderObject;
|
protected object m_senderObject;
|
||||||
protected ChatTypeEnum m_type;
|
protected ChatTypeEnum m_type;
|
||||||
protected UUID m_fromID;
|
protected UUID m_fromID;
|
||||||
|
protected UUID m_destination = UUID.Zero;
|
||||||
|
|
||||||
public OSChatMessage()
|
public OSChatMessage()
|
||||||
{
|
{
|
||||||
|
@ -131,6 +132,12 @@ namespace OpenSim.Framework
|
||||||
set { m_fromID = value; }
|
set { m_fromID = value; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public UUID Destination
|
||||||
|
{
|
||||||
|
get { return m_destination; }
|
||||||
|
set { m_destination = value; }
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -41,6 +41,7 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
|
|
||||||
private readonly BaseHttpServer m_server;
|
private readonly BaseHttpServer m_server;
|
||||||
private static Queue m_requests = Queue.Synchronized(new Queue());
|
private static Queue m_requests = Queue.Synchronized(new Queue());
|
||||||
|
private static ManualResetEvent m_ev = new ManualResetEvent(false);
|
||||||
private uint m_WorkerThreadCount = 0;
|
private uint m_WorkerThreadCount = 0;
|
||||||
private Thread[] m_workerThreads;
|
private Thread[] m_workerThreads;
|
||||||
private PollServiceWorkerThread[] m_PollServiceWorkerThreads;
|
private PollServiceWorkerThread[] m_PollServiceWorkerThreads;
|
||||||
|
@ -90,15 +91,17 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
{
|
{
|
||||||
lock (m_requests)
|
lock (m_requests)
|
||||||
m_requests.Enqueue(req);
|
m_requests.Enqueue(req);
|
||||||
|
m_ev.Set();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ThreadStart()
|
public void ThreadStart()
|
||||||
{
|
{
|
||||||
while (m_running)
|
while (m_running)
|
||||||
{
|
{
|
||||||
|
m_ev.WaitOne(1000);
|
||||||
|
m_ev.Reset();
|
||||||
Watchdog.UpdateThread();
|
Watchdog.UpdateThread();
|
||||||
ProcessQueuedRequests();
|
ProcessQueuedRequests();
|
||||||
Thread.Sleep(1000);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -154,4 +157,4 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
m_running = false;
|
m_running = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,8 +89,15 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
Hashtable responsedata = req.PollServiceArgs.GetEvents(req.RequestID, req.PollServiceArgs.Id, str.ReadToEnd());
|
try
|
||||||
DoHTTPGruntWork(m_server, req, responsedata);
|
{
|
||||||
|
Hashtable responsedata = req.PollServiceArgs.GetEvents(req.RequestID, req.PollServiceArgs.Id, str.ReadToEnd());
|
||||||
|
DoHTTPGruntWork(m_server, req, responsedata);
|
||||||
|
}
|
||||||
|
catch (ObjectDisposedException) // Browser aborted before we could read body, server closed the stream
|
||||||
|
{
|
||||||
|
// Ignore it, no need to reply
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -161,4 +168,4 @@ namespace OpenSim.Framework.Servers.HttpServer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -199,6 +199,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat
|
||||||
UUID fromID = UUID.Zero;
|
UUID fromID = UUID.Zero;
|
||||||
string message = c.Message;
|
string message = c.Message;
|
||||||
IScene scene = c.Scene;
|
IScene scene = c.Scene;
|
||||||
|
UUID destination = c.Destination;
|
||||||
Vector3 fromPos = c.Position;
|
Vector3 fromPos = c.Position;
|
||||||
Vector3 regionPos = new Vector3(scene.RegionInfo.RegionLocX * Constants.RegionSize,
|
Vector3 regionPos = new Vector3(scene.RegionInfo.RegionLocX * Constants.RegionSize,
|
||||||
scene.RegionInfo.RegionLocY * Constants.RegionSize, 0);
|
scene.RegionInfo.RegionLocY * Constants.RegionSize, 0);
|
||||||
|
@ -222,6 +223,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat
|
||||||
{
|
{
|
||||||
fromNamePrefix = m_adminPrefix;
|
fromNamePrefix = m_adminPrefix;
|
||||||
}
|
}
|
||||||
|
destination = UUID.Zero; // Avatars cant "SayTo"
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case ChatSourceType.Object:
|
case ChatSourceType.Object:
|
||||||
|
@ -244,9 +246,13 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat
|
||||||
{
|
{
|
||||||
// This should use ForEachClient, but clients don't have a position.
|
// This should use ForEachClient, but clients don't have a position.
|
||||||
// If camera is moved into client, then camera position can be used
|
// If camera is moved into client, then camera position can be used
|
||||||
|
// MT: No, it can't, as chat is heard from the avatar position, not
|
||||||
|
// the camera position.
|
||||||
s.ForEachRootScenePresence(
|
s.ForEachRootScenePresence(
|
||||||
delegate(ScenePresence presence)
|
delegate(ScenePresence presence)
|
||||||
{
|
{
|
||||||
|
if (destination != UUID.Zero && presence.UUID != destination)
|
||||||
|
return;
|
||||||
ILandObject Presencecheck = s.LandChannel.GetLandObject(presence.AbsolutePosition.X, presence.AbsolutePosition.Y);
|
ILandObject Presencecheck = s.LandChannel.GetLandObject(presence.AbsolutePosition.X, presence.AbsolutePosition.Y);
|
||||||
if (Presencecheck != null)
|
if (Presencecheck != null)
|
||||||
{
|
{
|
||||||
|
@ -345,8 +351,9 @@ namespace OpenSim.Region.CoreModules.Avatar.Chat
|
||||||
UUID fromAgentID, string fromName, ChatTypeEnum type,
|
UUID fromAgentID, string fromName, ChatTypeEnum type,
|
||||||
string message, ChatSourceType src)
|
string message, ChatSourceType src)
|
||||||
{
|
{
|
||||||
// don't send stuff to child agents
|
// don't send llRegionSay to child agents. Send normal chat because you
|
||||||
if (presence.IsChildAgent) return false;
|
// can't talk across sim borders if it's not done
|
||||||
|
if (type == ChatTypeEnum.Broadcast && presence.IsChildAgent) return false;
|
||||||
|
|
||||||
Vector3 fromRegionPos = fromPos + regionPos;
|
Vector3 fromRegionPos = fromPos + regionPos;
|
||||||
Vector3 toRegionPos = presence.AbsolutePosition +
|
Vector3 toRegionPos = presence.AbsolutePosition +
|
||||||
|
|
|
@ -532,7 +532,8 @@ namespace OpenSim.Region.CoreModules.Scripting.LSLHttp
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_log.Warn("[HttpRequestHandler]: http-in request failed; no such url: "+urlkey.ToString());
|
//m_log.Warn("[HttpRequestHandler]: http-in request failed; no such url: "+urlkey.ToString());
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//for llGetHttpHeader support we need to store original URI here
|
//for llGetHttpHeader support we need to store original URI here
|
||||||
|
|
|
@ -90,6 +90,8 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
|
||||||
// private static readonly ILog m_log =
|
// private static readonly ILog m_log =
|
||||||
// LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
// LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
|
||||||
|
|
||||||
|
private const int DEBUG_CHANNEL = 2147483647;
|
||||||
|
|
||||||
private ListenerManager m_listenerManager;
|
private ListenerManager m_listenerManager;
|
||||||
private Queue m_pending;
|
private Queue m_pending;
|
||||||
private Queue m_pendingQ;
|
private Queue m_pendingQ;
|
||||||
|
@ -311,6 +313,10 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
|
||||||
public bool DeliverMessageTo(UUID target, int channel, Vector3 pos, string name, UUID id, string msg, out string error)
|
public bool DeliverMessageTo(UUID target, int channel, Vector3 pos, string name, UUID id, string msg, out string error)
|
||||||
{
|
{
|
||||||
error = null;
|
error = null;
|
||||||
|
|
||||||
|
if (channel == DEBUG_CHANNEL)
|
||||||
|
return true;
|
||||||
|
|
||||||
// Is id an avatar?
|
// Is id an avatar?
|
||||||
ScenePresence sp = m_scene.GetScenePresence(target);
|
ScenePresence sp = m_scene.GetScenePresence(target);
|
||||||
|
|
||||||
|
@ -319,7 +325,9 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
|
||||||
// Send message to avatar
|
// Send message to avatar
|
||||||
if (channel == 0)
|
if (channel == 0)
|
||||||
{
|
{
|
||||||
m_scene.SimChatBroadcast(Utils.StringToBytes(msg), ChatTypeEnum.Broadcast, 0, pos, name, id, false);
|
// Channel 0 goes to viewer ONLY
|
||||||
|
m_scene.SimChat(Utils.StringToBytes(msg), ChatTypeEnum.Broadcast, 0, pos, name, id, false, false, target);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<SceneObjectGroup> attachments = sp.GetAttachments();
|
List<SceneObjectGroup> attachments = sp.GetAttachments();
|
||||||
|
@ -351,12 +359,9 @@ namespace OpenSim.Region.CoreModules.Scripting.WorldComm
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Need to toss an error here
|
SceneObjectPart part = m_scene.GetSceneObjectPart(target);
|
||||||
if (channel == 0)
|
if (part == null) // Not even an object
|
||||||
{
|
return true; // No error
|
||||||
error = "Cannot use llRegionSayTo to message objects on channel 0";
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (ListenerInfo li in m_listenerManager.GetListeners(UUID.Zero, channel, name, id, msg))
|
foreach (ListenerInfo li in m_listenerManager.GetListeners(UUID.Zero, channel, name, id, msg))
|
||||||
{
|
{
|
||||||
|
|
|
@ -38,8 +38,8 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
public partial class Scene
|
public partial class Scene
|
||||||
{
|
{
|
||||||
protected void SimChat(byte[] message, ChatTypeEnum type, int channel, Vector3 fromPos, string fromName,
|
public void SimChat(byte[] message, ChatTypeEnum type, int channel, Vector3 fromPos, string fromName,
|
||||||
UUID fromID, bool fromAgent, bool broadcast)
|
UUID fromID, bool fromAgent, bool broadcast, UUID destination)
|
||||||
{
|
{
|
||||||
OSChatMessage args = new OSChatMessage();
|
OSChatMessage args = new OSChatMessage();
|
||||||
|
|
||||||
|
@ -49,6 +49,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
args.Position = fromPos;
|
args.Position = fromPos;
|
||||||
args.SenderUUID = fromID;
|
args.SenderUUID = fromID;
|
||||||
args.Scene = this;
|
args.Scene = this;
|
||||||
|
args.Destination = destination;
|
||||||
|
|
||||||
if (fromAgent)
|
if (fromAgent)
|
||||||
{
|
{
|
||||||
|
@ -71,6 +72,12 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
EventManager.TriggerOnChatFromWorld(this, args);
|
EventManager.TriggerOnChatFromWorld(this, args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void SimChat(byte[] message, ChatTypeEnum type, int channel, Vector3 fromPos, string fromName,
|
||||||
|
UUID fromID, bool fromAgent, bool broadcast)
|
||||||
|
{
|
||||||
|
SimChat(message, type, channel, fromPos, fromName, fromID, fromAgent, broadcast, UUID.Zero);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -12164,9 +12164,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
|
|
||||||
ContactResult result = new ContactResult ();
|
ContactResult result = new ContactResult ();
|
||||||
result.ConsumerID = group.LocalId;
|
result.ConsumerID = group.LocalId;
|
||||||
result.Depth = intersection.distance;
|
// result.Depth = intersection.distance;
|
||||||
result.Normal = intersection.normal;
|
result.Normal = intersection.normal;
|
||||||
result.Pos = intersection.ipoint;
|
result.Pos = intersection.ipoint;
|
||||||
|
result.Depth = Vector3.Mag(rayStart - result.Pos);
|
||||||
|
|
||||||
contacts.Add(result);
|
contacts.Add(result);
|
||||||
});
|
});
|
||||||
|
@ -12361,7 +12362,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
bool checkPhysical = !((rejectTypes & ScriptBaseClass.RC_REJECT_PHYSICAL) == ScriptBaseClass.RC_REJECT_PHYSICAL);
|
bool checkPhysical = !((rejectTypes & ScriptBaseClass.RC_REJECT_PHYSICAL) == ScriptBaseClass.RC_REJECT_PHYSICAL);
|
||||||
|
|
||||||
|
|
||||||
if (World.SuportsRayCastFiltered())
|
if (false)// World.SuportsRayCastFiltered())
|
||||||
{
|
{
|
||||||
if (dist == 0)
|
if (dist == 0)
|
||||||
return list;
|
return list;
|
||||||
|
|
|
@ -671,7 +671,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||||
|
|
||||||
public static readonly LSLInteger RCERR_UNKNOWN = -1;
|
public static readonly LSLInteger RCERR_UNKNOWN = -1;
|
||||||
public static readonly LSLInteger RCERR_SIM_PERF_LOW = -2;
|
public static readonly LSLInteger RCERR_SIM_PERF_LOW = -2;
|
||||||
public static readonly LSLInteger RCERR_CAST_TIME_EXCEEDED = 3;
|
public static readonly LSLInteger RCERR_CAST_TIME_EXCEEDED = -3;
|
||||||
|
|
||||||
public const int KFM_MODE = 1;
|
public const int KFM_MODE = 1;
|
||||||
public const int KFM_LOOP = 1;
|
public const int KFM_LOOP = 1;
|
||||||
|
|
|
@ -197,6 +197,8 @@ namespace OpenSim.Region.ScriptEngine.Shared
|
||||||
presence.Velocity.Z);
|
presence.Velocity.Z);
|
||||||
|
|
||||||
Type = 0x01; // Avatar
|
Type = 0x01; // Avatar
|
||||||
|
if (presence.PresenceType == PresenceType.Npc)
|
||||||
|
Type = 0x20;
|
||||||
if (presence.Velocity != Vector3.Zero)
|
if (presence.Velocity != Vector3.Zero)
|
||||||
Type |= 0x02; // Active
|
Type |= 0x02; // Active
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue