mirror of
https://github.com/opensim/opensim.git
synced 2026-07-31 13:55:35 +08:00
* Optimized usings
* Shortened type references * Removed redundant 'this' qualifier
This commit is contained in:
@@ -29,12 +29,10 @@ using System.Net.Sockets;
|
||||
|
||||
namespace OpenSim.Region.ClientStack
|
||||
{
|
||||
|
||||
public interface ClientStackNetworkHandler
|
||||
{
|
||||
void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode);// EndPoint packetSender);
|
||||
void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode); // EndPoint packetSender);
|
||||
void RemoveClientCircuit(uint circuitcode);
|
||||
void RegisterPacketServer(PacketServer server);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -27,9 +27,8 @@
|
||||
*/
|
||||
using libsecondlife;
|
||||
using libsecondlife.Packets;
|
||||
using OpenSim.Framework.Console;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Framework.Console;
|
||||
|
||||
namespace OpenSim.Region.ClientStack
|
||||
{
|
||||
@@ -37,17 +36,17 @@ namespace OpenSim.Region.ClientStack
|
||||
{
|
||||
protected virtual void RegisterLocalPacketHandlers()
|
||||
{
|
||||
this.AddLocalPacketHandler(PacketType.LogoutRequest, this.Logout);
|
||||
this.AddLocalPacketHandler(PacketType.ViewerEffect, this.HandleViewerEffect);
|
||||
this.AddLocalPacketHandler(PacketType.AgentCachedTexture, this.AgentTextureCached);
|
||||
this.AddLocalPacketHandler(PacketType.MultipleObjectUpdate, this.MultipleObjUpdate);
|
||||
AddLocalPacketHandler(PacketType.LogoutRequest, Logout);
|
||||
AddLocalPacketHandler(PacketType.ViewerEffect, HandleViewerEffect);
|
||||
AddLocalPacketHandler(PacketType.AgentCachedTexture, AgentTextureCached);
|
||||
AddLocalPacketHandler(PacketType.MultipleObjectUpdate, MultipleObjUpdate);
|
||||
}
|
||||
|
||||
private bool HandleViewerEffect(IClientAPI sender, Packet Pack)
|
||||
{
|
||||
ViewerEffectPacket viewer = (ViewerEffectPacket)Pack;
|
||||
ViewerEffectPacket viewer = (ViewerEffectPacket) Pack;
|
||||
|
||||
if( OnViewerEffect != null )
|
||||
if (OnViewerEffect != null)
|
||||
{
|
||||
OnViewerEffect(sender, viewer.Effect);
|
||||
}
|
||||
@@ -59,7 +58,7 @@ namespace OpenSim.Region.ClientStack
|
||||
{
|
||||
MainLog.Instance.Verbose("CLIENT", "Got a logout request");
|
||||
|
||||
if( OnLogout != null )
|
||||
if (OnLogout != null)
|
||||
{
|
||||
OnLogout(client);
|
||||
}
|
||||
@@ -70,13 +69,14 @@ namespace OpenSim.Region.ClientStack
|
||||
protected bool AgentTextureCached(IClientAPI simclient, Packet packet)
|
||||
{
|
||||
//System.Console.WriteLine("texture cached: " + packet.ToString());
|
||||
AgentCachedTexturePacket chechedtex = (AgentCachedTexturePacket)packet;
|
||||
AgentCachedTexturePacket chechedtex = (AgentCachedTexturePacket) packet;
|
||||
AgentCachedTextureResponsePacket cachedresp = new AgentCachedTextureResponsePacket();
|
||||
cachedresp.AgentData.AgentID = this.AgentId;
|
||||
cachedresp.AgentData.SessionID = this.m_sessionId;
|
||||
cachedresp.AgentData.SerialNum = this.cachedtextureserial;
|
||||
this.cachedtextureserial++;
|
||||
cachedresp.WearableData = new AgentCachedTextureResponsePacket.WearableDataBlock[chechedtex.WearableData.Length];
|
||||
cachedresp.AgentData.AgentID = AgentId;
|
||||
cachedresp.AgentData.SessionID = m_sessionId;
|
||||
cachedresp.AgentData.SerialNum = cachedtextureserial;
|
||||
cachedtextureserial++;
|
||||
cachedresp.WearableData =
|
||||
new AgentCachedTextureResponsePacket.WearableDataBlock[chechedtex.WearableData.Length];
|
||||
for (int i = 0; i < chechedtex.WearableData.Length; i++)
|
||||
{
|
||||
cachedresp.WearableData[i] = new AgentCachedTextureResponsePacket.WearableDataBlock();
|
||||
@@ -84,17 +84,18 @@ namespace OpenSim.Region.ClientStack
|
||||
cachedresp.WearableData[i].TextureID = LLUUID.Zero;
|
||||
cachedresp.WearableData[i].HostName = new byte[0];
|
||||
}
|
||||
this.OutPacket(cachedresp);
|
||||
OutPacket(cachedresp);
|
||||
return true;
|
||||
}
|
||||
|
||||
protected bool MultipleObjUpdate(IClientAPI simClient, Packet packet)
|
||||
{
|
||||
MultipleObjectUpdatePacket multipleupdate = (MultipleObjectUpdatePacket)packet;
|
||||
MultipleObjectUpdatePacket multipleupdate = (MultipleObjectUpdatePacket) packet;
|
||||
// System.Console.WriteLine("new multi update packet " + multipleupdate.ToString());
|
||||
for (int i = 0; i < multipleupdate.ObjectData.Length; i++)
|
||||
{
|
||||
#region position
|
||||
|
||||
if (multipleupdate.ObjectData[i].Type == 9) //change position
|
||||
{
|
||||
if (OnUpdatePrimGroupPosition != null)
|
||||
@@ -102,20 +103,20 @@ namespace OpenSim.Region.ClientStack
|
||||
LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0);
|
||||
OnUpdatePrimGroupPosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this);
|
||||
}
|
||||
|
||||
}
|
||||
else if (multipleupdate.ObjectData[i].Type == 1) //single item of group change position
|
||||
{
|
||||
if (OnUpdatePrimSinglePosition != null)
|
||||
{
|
||||
libsecondlife.LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0);
|
||||
LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0);
|
||||
// System.Console.WriteLine("new movement position is " + pos.X + " , " + pos.Y + " , " + pos.Z);
|
||||
OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this);
|
||||
}
|
||||
}
|
||||
#endregion position
|
||||
#region rotation
|
||||
else if (multipleupdate.ObjectData[i].Type == 2)// single item of group rotation from tab
|
||||
#endregion position
|
||||
#region rotation
|
||||
|
||||
else if (multipleupdate.ObjectData[i].Type == 2) // single item of group rotation from tab
|
||||
{
|
||||
if (OnUpdatePrimSingleRotation != null)
|
||||
{
|
||||
@@ -124,38 +125,39 @@ namespace OpenSim.Region.ClientStack
|
||||
OnUpdatePrimSingleRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this);
|
||||
}
|
||||
}
|
||||
else if (multipleupdate.ObjectData[i].Type == 3)// single item of group rotation from mouse
|
||||
else if (multipleupdate.ObjectData[i].Type == 3) // single item of group rotation from mouse
|
||||
{
|
||||
if (OnUpdatePrimSingleRotation != null)
|
||||
{
|
||||
libsecondlife.LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 12, true);
|
||||
LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 12, true);
|
||||
//System.Console.WriteLine("new mouse rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W);
|
||||
OnUpdatePrimSingleRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this);
|
||||
}
|
||||
}
|
||||
else if (multipleupdate.ObjectData[i].Type == 10)//group rotation from object tab
|
||||
else if (multipleupdate.ObjectData[i].Type == 10) //group rotation from object tab
|
||||
{
|
||||
if (OnUpdatePrimGroupRotation != null)
|
||||
{
|
||||
libsecondlife.LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 0, true);
|
||||
LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 0, true);
|
||||
// Console.WriteLine("new rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W);
|
||||
OnUpdatePrimGroupRotation(multipleupdate.ObjectData[i].ObjectLocalID, rot, this);
|
||||
}
|
||||
}
|
||||
else if (multipleupdate.ObjectData[i].Type == 11)//group rotation from mouse
|
||||
else if (multipleupdate.ObjectData[i].Type == 11) //group rotation from mouse
|
||||
{
|
||||
if (OnUpdatePrimGroupMouseRotation != null)
|
||||
{
|
||||
libsecondlife.LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0);
|
||||
libsecondlife.LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 12, true);
|
||||
LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0);
|
||||
LLQuaternion rot = new LLQuaternion(multipleupdate.ObjectData[i].Data, 12, true);
|
||||
//Console.WriteLine("new rotation position is " + pos.X + " , " + pos.Y + " , " + pos.Z);
|
||||
// Console.WriteLine("new rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W);
|
||||
OnUpdatePrimGroupMouseRotation(multipleupdate.ObjectData[i].ObjectLocalID, pos, rot, this);
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
#region scale
|
||||
else if (multipleupdate.ObjectData[i].Type == 13)//group scale from object tab
|
||||
#endregion
|
||||
#region scale
|
||||
|
||||
else if (multipleupdate.ObjectData[i].Type == 13) //group scale from object tab
|
||||
{
|
||||
if (OnUpdatePrimScale != null)
|
||||
{
|
||||
@@ -164,40 +166,41 @@ namespace OpenSim.Region.ClientStack
|
||||
OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this);
|
||||
|
||||
// Change the position based on scale (for bug number 246)
|
||||
libsecondlife.LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0);
|
||||
LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0);
|
||||
// System.Console.WriteLine("new movement position is " + pos.X + " , " + pos.Y + " , " + pos.Z);
|
||||
OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this);
|
||||
}
|
||||
}
|
||||
else if (multipleupdate.ObjectData[i].Type == 29)//group scale from mouse
|
||||
else if (multipleupdate.ObjectData[i].Type == 29) //group scale from mouse
|
||||
{
|
||||
if (OnUpdatePrimScale != null)
|
||||
{
|
||||
libsecondlife.LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12);
|
||||
LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12);
|
||||
// Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z );
|
||||
OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this);
|
||||
libsecondlife.LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0);
|
||||
LLVector3 pos = new LLVector3(multipleupdate.ObjectData[i].Data, 0);
|
||||
OnUpdatePrimSinglePosition(multipleupdate.ObjectData[i].ObjectLocalID, pos, this);
|
||||
}
|
||||
}
|
||||
else if (multipleupdate.ObjectData[i].Type == 5)//single prim scale from object tab
|
||||
else if (multipleupdate.ObjectData[i].Type == 5) //single prim scale from object tab
|
||||
{
|
||||
if (OnUpdatePrimScale != null)
|
||||
{
|
||||
libsecondlife.LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12);
|
||||
LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12);
|
||||
// Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z);
|
||||
OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this);
|
||||
}
|
||||
}
|
||||
else if (multipleupdate.ObjectData[i].Type == 21)//single prim scale from mouse
|
||||
else if (multipleupdate.ObjectData[i].Type == 21) //single prim scale from mouse
|
||||
{
|
||||
if (OnUpdatePrimScale != null)
|
||||
{
|
||||
libsecondlife.LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12);
|
||||
LLVector3 scale = new LLVector3(multipleupdate.ObjectData[i].Data, 12);
|
||||
// Console.WriteLine("new scale is " + scale.X + " , " + scale.Y + " , " + scale.Z);
|
||||
OnUpdatePrimScale(multipleupdate.ObjectData[i].ObjectLocalID, scale, this);
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
return true;
|
||||
@@ -208,7 +211,7 @@ namespace OpenSim.Region.ClientStack
|
||||
//should be getting the map layer from the grid server
|
||||
//send a layer covering the 800,800 - 1200,1200 area (should be covering the requested area)
|
||||
MapLayerReplyPacket mapReply = new MapLayerReplyPacket();
|
||||
mapReply.AgentData.AgentID = this.AgentId;
|
||||
mapReply.AgentData.AgentID = AgentId;
|
||||
mapReply.AgentData.Flags = 0;
|
||||
mapReply.LayerData = new MapLayerReplyPacket.LayerDataBlock[1];
|
||||
mapReply.LayerData[0] = new MapLayerReplyPacket.LayerDataBlock();
|
||||
@@ -217,7 +220,7 @@ namespace OpenSim.Region.ClientStack
|
||||
mapReply.LayerData[0].Top = 30000;
|
||||
mapReply.LayerData[0].Right = 30000;
|
||||
mapReply.LayerData[0].ImageID = new LLUUID("00000000-0000-0000-9999-000000000006");
|
||||
this.OutPacket(mapReply);
|
||||
OutPacket(mapReply);
|
||||
}
|
||||
|
||||
public void RequestMapBlocks(int minX, int minY, int maxX, int maxY)
|
||||
@@ -251,4 +254,4 @@ namespace OpenSim.Region.ClientStack
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -32,13 +32,12 @@ using System.Net.Sockets;
|
||||
using System.Timers;
|
||||
using libsecondlife;
|
||||
using libsecondlife.Packets;
|
||||
using OpenSim.Framework.Console;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Region.Environment;
|
||||
using OpenSim.Framework.Console;
|
||||
|
||||
namespace OpenSim.Region.ClientStack
|
||||
{
|
||||
public partial class ClientView
|
||||
public partial class ClientView
|
||||
{
|
||||
protected BlockingQueue<QueItem> PacketQueue;
|
||||
protected Dictionary<uint, uint> PendingAcks = new Dictionary<uint, uint>();
|
||||
@@ -84,7 +83,7 @@ namespace OpenSim.Region.ClientStack
|
||||
Pack.Header.Sequence = Sequence;
|
||||
}
|
||||
|
||||
if (Pack.Header.Reliable) //DIRTY HACK
|
||||
if (Pack.Header.Reliable) //DIRTY HACK
|
||||
{
|
||||
lock (NeedAck)
|
||||
{
|
||||
@@ -148,19 +147,21 @@ namespace OpenSim.Region.ClientStack
|
||||
if (Pack.Header.Zerocoded)
|
||||
{
|
||||
int packetsize = Helpers.ZeroEncode(sendbuffer, sendbuffer.Length, ZeroOutBuffer);
|
||||
m_networkServer.SendPacketTo(ZeroOutBuffer, packetsize, SocketFlags.None, m_circuitCode);//userEP);
|
||||
m_networkServer.SendPacketTo(ZeroOutBuffer, packetsize, SocketFlags.None, m_circuitCode); //userEP);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_networkServer.SendPacketTo(sendbuffer, sendbuffer.Length, SocketFlags.None, m_circuitCode); //userEP);
|
||||
m_networkServer.SendPacketTo(sendbuffer, sendbuffer.Length, SocketFlags.None, m_circuitCode);
|
||||
//userEP);
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
MainLog.Instance.Warn("client", "OpenSimClient.cs:ProcessOutPacket() - WARNING: Socket exception occurred on connection " + userEP.ToString() + " - killing thread");
|
||||
this.KillThread();
|
||||
MainLog.Instance.Warn("client",
|
||||
"OpenSimClient.cs:ProcessOutPacket() - WARNING: Socket exception occurred on connection " +
|
||||
userEP.ToString() + " - killing thread");
|
||||
KillThread();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public virtual void InPacket(Packet NewPack)
|
||||
@@ -180,7 +181,7 @@ namespace OpenSim.Region.ClientStack
|
||||
// Handle PacketAck packets
|
||||
if (NewPack.Type == PacketType.PacketAck)
|
||||
{
|
||||
PacketAckPacket ackPacket = (PacketAckPacket)NewPack;
|
||||
PacketAckPacket ackPacket = (PacketAckPacket) NewPack;
|
||||
|
||||
lock (NeedAck)
|
||||
{
|
||||
@@ -193,7 +194,7 @@ namespace OpenSim.Region.ClientStack
|
||||
else if ((NewPack.Type == PacketType.StartPingCheck))
|
||||
{
|
||||
//reply to pingcheck
|
||||
StartPingCheckPacket startPing = (StartPingCheckPacket)NewPack;
|
||||
StartPingCheckPacket startPing = (StartPingCheckPacket) NewPack;
|
||||
CompletePingCheckPacket endPing = new CompletePingCheckPacket();
|
||||
endPing.PingID.PingID = startPing.PingID.PingID;
|
||||
OutPacket(endPing);
|
||||
@@ -203,9 +204,8 @@ namespace OpenSim.Region.ClientStack
|
||||
QueItem item = new QueItem();
|
||||
item.Packet = NewPack;
|
||||
item.Incoming = true;
|
||||
this.PacketQueue.Enqueue(item);
|
||||
PacketQueue.Enqueue(item);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public virtual void OutPacket(Packet NewPack)
|
||||
@@ -213,7 +213,7 @@ namespace OpenSim.Region.ClientStack
|
||||
QueItem item = new QueItem();
|
||||
item.Packet = NewPack;
|
||||
item.Incoming = false;
|
||||
this.PacketQueue.Enqueue(item);
|
||||
PacketQueue.Enqueue(item);
|
||||
}
|
||||
|
||||
# region Low Level Packet Methods
|
||||
@@ -229,7 +229,6 @@ namespace OpenSim.Region.ClientStack
|
||||
ack_it.Header.Reliable = false;
|
||||
|
||||
OutPacket(ack_it);
|
||||
|
||||
}
|
||||
/*
|
||||
if (Pack.Header.Reliable)
|
||||
@@ -252,8 +251,8 @@ namespace OpenSim.Region.ClientStack
|
||||
{
|
||||
if ((now - packet.TickCount > RESEND_TIMEOUT) && (!packet.Header.Resent))
|
||||
{
|
||||
MainLog.Instance.Verbose( "Resending " + packet.Type.ToString() + " packet, " +
|
||||
(now - packet.TickCount) + "ms have passed");
|
||||
MainLog.Instance.Verbose("Resending " + packet.Type.ToString() + " packet, " +
|
||||
(now - packet.TickCount) + "ms have passed");
|
||||
|
||||
packet.Header.Resent = true;
|
||||
OutPacket(packet);
|
||||
@@ -271,7 +270,7 @@ namespace OpenSim.Region.ClientStack
|
||||
if (PendingAcks.Count > 250)
|
||||
{
|
||||
// FIXME: Handle the odd case where we have too many pending ACKs queued up
|
||||
MainLog.Instance.Verbose( "Too many ACKs queued up!");
|
||||
MainLog.Instance.Verbose("Too many ACKs queued up!");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -302,6 +301,7 @@ namespace OpenSim.Region.ClientStack
|
||||
SendAcks();
|
||||
ResendUnacked();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Nested Classes
|
||||
@@ -315,6 +315,7 @@ namespace OpenSim.Region.ClientStack
|
||||
public Packet Packet;
|
||||
public bool Incoming;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -31,8 +31,6 @@ using System.Text;
|
||||
using libsecondlife;
|
||||
using libsecondlife.Packets;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
|
||||
namespace OpenSim.Region.ClientStack
|
||||
{
|
||||
@@ -63,7 +61,7 @@ namespace OpenSim.Region.ClientStack
|
||||
{
|
||||
ack_pack(Pack);
|
||||
|
||||
if (this.ProcessPacketMethod(Pack))
|
||||
if (ProcessPacketMethod(Pack))
|
||||
{
|
||||
//there is a handler registered that handled this packet type
|
||||
return;
|
||||
@@ -74,16 +72,17 @@ namespace OpenSim.Region.ClientStack
|
||||
|
||||
switch (Pack.Type)
|
||||
{
|
||||
#region Scene/Avatar
|
||||
#region Scene/Avatar
|
||||
|
||||
case PacketType.AvatarPropertiesRequest:
|
||||
AvatarPropertiesRequestPacket avatarProperties = (AvatarPropertiesRequestPacket)Pack;
|
||||
AvatarPropertiesRequestPacket avatarProperties = (AvatarPropertiesRequestPacket) Pack;
|
||||
if (OnRequestAvatarProperties != null)
|
||||
{
|
||||
OnRequestAvatarProperties(this, avatarProperties.AgentData.AvatarID);
|
||||
}
|
||||
break;
|
||||
case PacketType.ChatFromViewer:
|
||||
ChatFromViewerPacket inchatpack = (ChatFromViewerPacket)Pack;
|
||||
ChatFromViewerPacket inchatpack = (ChatFromViewerPacket) Pack;
|
||||
if (Util.FieldToString(inchatpack.ChatData.Message) == "")
|
||||
{
|
||||
//empty message so don't bother with it
|
||||
@@ -103,30 +102,32 @@ namespace OpenSim.Region.ClientStack
|
||||
args.Channel = channel;
|
||||
args.From = fromName;
|
||||
args.Message = Util.FieldToString(message);
|
||||
args.Type = (ChatTypeEnum)type;
|
||||
args.Type = (ChatTypeEnum) type;
|
||||
args.Position = fromPos;
|
||||
|
||||
args.Scene = Scene;
|
||||
args.Sender = this;
|
||||
|
||||
this.OnChatFromViewer(this, args);
|
||||
OnChatFromViewer(this, args);
|
||||
}
|
||||
break;
|
||||
case PacketType.ImprovedInstantMessage:
|
||||
ImprovedInstantMessagePacket msgpack = (ImprovedInstantMessagePacket)Pack;
|
||||
ImprovedInstantMessagePacket msgpack = (ImprovedInstantMessagePacket) Pack;
|
||||
string IMfromName = Util.FieldToString(msgpack.MessageBlock.FromAgentName);
|
||||
string IMmessage = Util.FieldToString(msgpack.MessageBlock.Message);
|
||||
if (OnInstantMessage != null)
|
||||
{
|
||||
this.OnInstantMessage(msgpack.AgentData.AgentID, msgpack.AgentData.SessionID, msgpack.MessageBlock.ToAgentID, msgpack.MessageBlock.ID,
|
||||
msgpack.MessageBlock.Timestamp, IMfromName, IMmessage, msgpack.MessageBlock.Dialog);
|
||||
OnInstantMessage(msgpack.AgentData.AgentID, msgpack.AgentData.SessionID,
|
||||
msgpack.MessageBlock.ToAgentID, msgpack.MessageBlock.ID,
|
||||
msgpack.MessageBlock.Timestamp, IMfromName, IMmessage,
|
||||
msgpack.MessageBlock.Dialog);
|
||||
}
|
||||
break;
|
||||
case PacketType.RezObject:
|
||||
RezObjectPacket rezPacket = (RezObjectPacket)Pack;
|
||||
RezObjectPacket rezPacket = (RezObjectPacket) Pack;
|
||||
if (OnRezObject != null)
|
||||
{
|
||||
this.OnRezObject(this, rezPacket.InventoryData.ItemID, rezPacket.RezData.RayEnd);
|
||||
OnRezObject(this, rezPacket.InventoryData.ItemID, rezPacket.RezData.RayEnd);
|
||||
}
|
||||
break;
|
||||
case PacketType.DeRezObject:
|
||||
@@ -136,13 +137,15 @@ namespace OpenSim.Region.ClientStack
|
||||
}
|
||||
break;
|
||||
case PacketType.ModifyLand:
|
||||
ModifyLandPacket modify = (ModifyLandPacket)Pack;
|
||||
ModifyLandPacket modify = (ModifyLandPacket) Pack;
|
||||
if (modify.ParcelData.Length > 0)
|
||||
{
|
||||
if (OnModifyTerrain != null)
|
||||
{
|
||||
OnModifyTerrain(modify.ModifyBlock.Height, modify.ModifyBlock.Seconds, modify.ModifyBlock.BrushSize,
|
||||
modify.ModifyBlock.Action, modify.ParcelData[0].North, modify.ParcelData[0].West, this);
|
||||
OnModifyTerrain(modify.ModifyBlock.Height, modify.ModifyBlock.Seconds,
|
||||
modify.ModifyBlock.BrushSize,
|
||||
modify.ModifyBlock.Action, modify.ParcelData[0].North,
|
||||
modify.ParcelData[0].West, this);
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -164,7 +167,7 @@ namespace OpenSim.Region.ClientStack
|
||||
break;
|
||||
case PacketType.AgentSetAppearance:
|
||||
//OpenSim.Framework.Console.MainLog.Instance.Verbose("set appear", Pack.ToString());
|
||||
AgentSetAppearancePacket appear = (AgentSetAppearancePacket)Pack;
|
||||
AgentSetAppearancePacket appear = (AgentSetAppearancePacket) Pack;
|
||||
if (OnSetAppearance != null)
|
||||
{
|
||||
OnSetAppearance(appear.ObjectData.TextureEntry, appear.VisualParam);
|
||||
@@ -179,17 +182,16 @@ namespace OpenSim.Region.ClientStack
|
||||
case PacketType.AgentUpdate:
|
||||
if (OnAgentUpdate != null)
|
||||
{
|
||||
AgentUpdatePacket agenUpdate = (AgentUpdatePacket)Pack;
|
||||
AgentUpdatePacket agenUpdate = (AgentUpdatePacket) Pack;
|
||||
OnAgentUpdate(this, agenUpdate.AgentData.ControlFlags, agenUpdate.AgentData.BodyRotation);
|
||||
}
|
||||
break;
|
||||
case PacketType.AgentAnimation:
|
||||
AgentAnimationPacket AgentAni = (AgentAnimationPacket)Pack;
|
||||
AgentAnimationPacket AgentAni = (AgentAnimationPacket) Pack;
|
||||
for (int i = 0; i < AgentAni.AnimationList.Length; i++)
|
||||
{
|
||||
if (AgentAni.AnimationList[i].StartAnim)
|
||||
{
|
||||
|
||||
if (OnStartAnim != null)
|
||||
{
|
||||
OnStartAnim(this, AgentAni.AnimationList[i].AnimID, 1);
|
||||
@@ -198,27 +200,29 @@ namespace OpenSim.Region.ClientStack
|
||||
}
|
||||
break;
|
||||
case PacketType.AgentRequestSit:
|
||||
AgentRequestSitPacket agentRequestSit = (AgentRequestSitPacket)Pack;
|
||||
AgentRequestSitPacket agentRequestSit = (AgentRequestSitPacket) Pack;
|
||||
SendSitResponse(agentRequestSit.TargetObject.TargetID, agentRequestSit.TargetObject.Offset);
|
||||
if (OnAgentRequestSit != null)
|
||||
{
|
||||
OnAgentRequestSit(this, agentRequestSit.AgentData.AgentID, agentRequestSit.TargetObject.TargetID);
|
||||
OnAgentRequestSit(this, agentRequestSit.AgentData.AgentID,
|
||||
agentRequestSit.TargetObject.TargetID);
|
||||
}
|
||||
break;
|
||||
case PacketType.AgentSit:
|
||||
if (OnAgentSit != null)
|
||||
{
|
||||
AgentSitPacket agentSit = (AgentSitPacket)Pack;
|
||||
AgentSitPacket agentSit = (AgentSitPacket) Pack;
|
||||
OnAgentSit(this, agentSit.AgentData.AgentID);
|
||||
}
|
||||
break;
|
||||
|
||||
#endregion
|
||||
#endregion
|
||||
|
||||
#region Objects/m_sceneObjects
|
||||
|
||||
#region Objects/m_sceneObjects
|
||||
case PacketType.ObjectLink:
|
||||
// OpenSim.Framework.Console.MainLog.Instance.Verbose( Pack.ToString());
|
||||
ObjectLinkPacket link = (ObjectLinkPacket)Pack;
|
||||
ObjectLinkPacket link = (ObjectLinkPacket) Pack;
|
||||
uint parentprimid = 0;
|
||||
List<uint> childrenprims = new List<uint>();
|
||||
if (link.ObjectData.Length > 1)
|
||||
@@ -238,13 +242,13 @@ namespace OpenSim.Region.ClientStack
|
||||
case PacketType.ObjectAdd:
|
||||
if (OnAddPrim != null)
|
||||
{
|
||||
ObjectAddPacket addPacket = (ObjectAddPacket)Pack;
|
||||
ObjectAddPacket addPacket = (ObjectAddPacket) Pack;
|
||||
PrimitiveBaseShape shape = GetShapeFromAddPacket(addPacket);
|
||||
OnAddPrim(this.AgentId, addPacket.ObjectData.RayEnd, shape);
|
||||
OnAddPrim(AgentId, addPacket.ObjectData.RayEnd, shape);
|
||||
}
|
||||
break;
|
||||
case PacketType.ObjectShape:
|
||||
ObjectShapePacket shapePacket = (ObjectShapePacket)Pack;
|
||||
ObjectShapePacket shapePacket = (ObjectShapePacket) Pack;
|
||||
for (int i = 0; i < shapePacket.ObjectData.Length; i++)
|
||||
{
|
||||
if (OnUpdatePrimShape != null)
|
||||
@@ -254,26 +258,28 @@ namespace OpenSim.Region.ClientStack
|
||||
}
|
||||
break;
|
||||
case PacketType.ObjectExtraParams:
|
||||
ObjectExtraParamsPacket extraPar = (ObjectExtraParamsPacket)Pack;
|
||||
ObjectExtraParamsPacket extraPar = (ObjectExtraParamsPacket) Pack;
|
||||
if (OnUpdateExtraParams != null)
|
||||
{
|
||||
OnUpdateExtraParams(extraPar.ObjectData[0].ObjectLocalID, extraPar.ObjectData[0].ParamType, extraPar.ObjectData[0].ParamInUse, extraPar.ObjectData[0].ParamData);
|
||||
OnUpdateExtraParams(extraPar.ObjectData[0].ObjectLocalID, extraPar.ObjectData[0].ParamType,
|
||||
extraPar.ObjectData[0].ParamInUse, extraPar.ObjectData[0].ParamData);
|
||||
}
|
||||
break;
|
||||
case PacketType.ObjectDuplicate:
|
||||
ObjectDuplicatePacket dupe = (ObjectDuplicatePacket)Pack;
|
||||
ObjectDuplicatePacket dupe = (ObjectDuplicatePacket) Pack;
|
||||
for (int i = 0; i < dupe.ObjectData.Length; i++)
|
||||
{
|
||||
if (OnObjectDuplicate != null)
|
||||
{
|
||||
OnObjectDuplicate(dupe.ObjectData[i].ObjectLocalID, dupe.SharedData.Offset, dupe.SharedData.DuplicateFlags);
|
||||
OnObjectDuplicate(dupe.ObjectData[i].ObjectLocalID, dupe.SharedData.Offset,
|
||||
dupe.SharedData.DuplicateFlags);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case PacketType.ObjectSelect:
|
||||
ObjectSelectPacket incomingselect = (ObjectSelectPacket)Pack;
|
||||
ObjectSelectPacket incomingselect = (ObjectSelectPacket) Pack;
|
||||
for (int i = 0; i < incomingselect.ObjectData.Length; i++)
|
||||
{
|
||||
if (OnObjectSelect != null)
|
||||
@@ -283,7 +289,7 @@ namespace OpenSim.Region.ClientStack
|
||||
}
|
||||
break;
|
||||
case PacketType.ObjectDeselect:
|
||||
ObjectDeselectPacket incomingdeselect = (ObjectDeselectPacket)Pack;
|
||||
ObjectDeselectPacket incomingdeselect = (ObjectDeselectPacket) Pack;
|
||||
for (int i = 0; i < incomingdeselect.ObjectData.Length; i++)
|
||||
{
|
||||
if (OnObjectDeselect != null)
|
||||
@@ -293,55 +299,58 @@ namespace OpenSim.Region.ClientStack
|
||||
}
|
||||
break;
|
||||
case PacketType.ObjectFlagUpdate:
|
||||
ObjectFlagUpdatePacket flags = (ObjectFlagUpdatePacket)Pack;
|
||||
ObjectFlagUpdatePacket flags = (ObjectFlagUpdatePacket) Pack;
|
||||
if (OnUpdatePrimFlags != null)
|
||||
{
|
||||
OnUpdatePrimFlags(flags.AgentData.ObjectLocalID, Pack, this);
|
||||
}
|
||||
break;
|
||||
case PacketType.ObjectImage:
|
||||
ObjectImagePacket imagePack = (ObjectImagePacket)Pack;
|
||||
ObjectImagePacket imagePack = (ObjectImagePacket) Pack;
|
||||
for (int i = 0; i < imagePack.ObjectData.Length; i++)
|
||||
{
|
||||
if (OnUpdatePrimTexture != null)
|
||||
{
|
||||
OnUpdatePrimTexture(imagePack.ObjectData[i].ObjectLocalID, imagePack.ObjectData[i].TextureEntry, this);
|
||||
OnUpdatePrimTexture(imagePack.ObjectData[i].ObjectLocalID,
|
||||
imagePack.ObjectData[i].TextureEntry, this);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case PacketType.ObjectGrab:
|
||||
ObjectGrabPacket grab = (ObjectGrabPacket)Pack;
|
||||
ObjectGrabPacket grab = (ObjectGrabPacket) Pack;
|
||||
if (OnGrabObject != null)
|
||||
{
|
||||
OnGrabObject(grab.ObjectData.LocalID, grab.ObjectData.GrabOffset, this);
|
||||
}
|
||||
break;
|
||||
case PacketType.ObjectGrabUpdate:
|
||||
ObjectGrabUpdatePacket grabUpdate = (ObjectGrabUpdatePacket)Pack;
|
||||
ObjectGrabUpdatePacket grabUpdate = (ObjectGrabUpdatePacket) Pack;
|
||||
if (OnGrabUpdate != null)
|
||||
{
|
||||
OnGrabUpdate(grabUpdate.ObjectData.ObjectID, grabUpdate.ObjectData.GrabOffsetInitial, grabUpdate.ObjectData.GrabPosition, this);
|
||||
OnGrabUpdate(grabUpdate.ObjectData.ObjectID, grabUpdate.ObjectData.GrabOffsetInitial,
|
||||
grabUpdate.ObjectData.GrabPosition, this);
|
||||
}
|
||||
break;
|
||||
case PacketType.ObjectDeGrab:
|
||||
ObjectDeGrabPacket deGrab = (ObjectDeGrabPacket)Pack;
|
||||
ObjectDeGrabPacket deGrab = (ObjectDeGrabPacket) Pack;
|
||||
if (OnDeGrabObject != null)
|
||||
{
|
||||
OnDeGrabObject(deGrab.ObjectData.LocalID, this);
|
||||
}
|
||||
break;
|
||||
case PacketType.ObjectDescription:
|
||||
ObjectDescriptionPacket objDes = (ObjectDescriptionPacket)Pack;
|
||||
ObjectDescriptionPacket objDes = (ObjectDescriptionPacket) Pack;
|
||||
for (int i = 0; i < objDes.ObjectData.Length; i++)
|
||||
{
|
||||
if (OnObjectDescription != null)
|
||||
{
|
||||
OnObjectDescription(objDes.ObjectData[i].LocalID, enc.GetString(objDes.ObjectData[i].Description));
|
||||
OnObjectDescription(objDes.ObjectData[i].LocalID,
|
||||
enc.GetString(objDes.ObjectData[i].Description));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case PacketType.ObjectName:
|
||||
ObjectNamePacket objName = (ObjectNamePacket)Pack;
|
||||
ObjectNamePacket objName = (ObjectNamePacket) Pack;
|
||||
for (int i = 0; i < objName.ObjectData.Length; i++)
|
||||
{
|
||||
if (OnObjectName != null)
|
||||
@@ -353,15 +362,16 @@ namespace OpenSim.Region.ClientStack
|
||||
case PacketType.ObjectPermissions:
|
||||
//Console.WriteLine("permissions set " + Pack.ToString());
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region Inventory/Asset/Other related packets
|
||||
#endregion
|
||||
|
||||
#region Inventory/Asset/Other related packets
|
||||
|
||||
case PacketType.RequestImage:
|
||||
RequestImagePacket imageRequest = (RequestImagePacket)Pack;
|
||||
RequestImagePacket imageRequest = (RequestImagePacket) Pack;
|
||||
//Console.WriteLine("image request: " + Pack.ToString());
|
||||
for (int i = 0; i < imageRequest.RequestImage.Length; i++)
|
||||
{
|
||||
|
||||
// still working on the Texture download module so for now using old method
|
||||
// TextureRequestArgs args = new TextureRequestArgs();
|
||||
// args.RequestedAssetID = imageRequest.RequestImage[i].Image;
|
||||
@@ -373,86 +383,104 @@ namespace OpenSim.Region.ClientStack
|
||||
// OnRequestTexture(this, args);
|
||||
// }
|
||||
|
||||
m_assetCache.AddTextureRequest(this, imageRequest.RequestImage[i].Image, imageRequest.RequestImage[i].Packet, imageRequest.RequestImage[i].DiscardLevel);
|
||||
m_assetCache.AddTextureRequest(this, imageRequest.RequestImage[i].Image,
|
||||
imageRequest.RequestImage[i].Packet,
|
||||
imageRequest.RequestImage[i].DiscardLevel);
|
||||
}
|
||||
break;
|
||||
case PacketType.TransferRequest:
|
||||
//Console.WriteLine("OpenSimClient.cs:ProcessInPacket() - Got transfer request");
|
||||
TransferRequestPacket transfer = (TransferRequestPacket)Pack;
|
||||
TransferRequestPacket transfer = (TransferRequestPacket) Pack;
|
||||
m_assetCache.AddAssetRequest(this, transfer);
|
||||
break;
|
||||
case PacketType.AssetUploadRequest:
|
||||
AssetUploadRequestPacket request = (AssetUploadRequestPacket)Pack;
|
||||
AssetUploadRequestPacket request = (AssetUploadRequestPacket) Pack;
|
||||
// Console.WriteLine("upload request " + Pack.ToString());
|
||||
// Console.WriteLine("upload request was for assetid: " + request.AssetBlock.TransactionID.Combine(this.SecureSessionID).ToStringHyphenated());
|
||||
if (OnAssetUploadRequest != null)
|
||||
{
|
||||
OnAssetUploadRequest(this, request.AssetBlock.TransactionID.Combine(this.SecureSessionID), request.AssetBlock.TransactionID, request.AssetBlock.Type, request.AssetBlock.AssetData, request.AssetBlock.StoreLocal);
|
||||
OnAssetUploadRequest(this, request.AssetBlock.TransactionID.Combine(SecureSessionID),
|
||||
request.AssetBlock.TransactionID, request.AssetBlock.Type,
|
||||
request.AssetBlock.AssetData, request.AssetBlock.StoreLocal);
|
||||
}
|
||||
break;
|
||||
case PacketType.RequestXfer:
|
||||
RequestXferPacket xferReq = (RequestXferPacket)Pack;
|
||||
RequestXferPacket xferReq = (RequestXferPacket) Pack;
|
||||
if (OnRequestXfer != null)
|
||||
{
|
||||
OnRequestXfer(this, xferReq.XferID.ID, Util.FieldToString(xferReq.XferID.Filename));
|
||||
}
|
||||
break;
|
||||
case PacketType.SendXferPacket:
|
||||
SendXferPacketPacket xferRec = (SendXferPacketPacket)Pack;
|
||||
SendXferPacketPacket xferRec = (SendXferPacketPacket) Pack;
|
||||
if (OnXferReceive != null)
|
||||
{
|
||||
OnXferReceive(this, xferRec.XferID.ID, xferRec.XferID.Packet, xferRec.DataPacket.Data);
|
||||
}
|
||||
break;
|
||||
case PacketType.ConfirmXferPacket:
|
||||
ConfirmXferPacketPacket confirmXfer = (ConfirmXferPacketPacket)Pack;
|
||||
ConfirmXferPacketPacket confirmXfer = (ConfirmXferPacketPacket) Pack;
|
||||
if (OnConfirmXfer != null)
|
||||
{
|
||||
OnConfirmXfer(this, confirmXfer.XferID.ID, confirmXfer.XferID.Packet);
|
||||
}
|
||||
break;
|
||||
case PacketType.CreateInventoryFolder:
|
||||
if (this.OnCreateNewInventoryFolder != null)
|
||||
if (OnCreateNewInventoryFolder != null)
|
||||
{
|
||||
CreateInventoryFolderPacket invFolder = (CreateInventoryFolderPacket)Pack;
|
||||
this.OnCreateNewInventoryFolder(this, invFolder.FolderData.FolderID, (ushort)invFolder.FolderData.Type, Util.FieldToString(invFolder.FolderData.Name), invFolder.FolderData.ParentID);
|
||||
CreateInventoryFolderPacket invFolder = (CreateInventoryFolderPacket) Pack;
|
||||
OnCreateNewInventoryFolder(this, invFolder.FolderData.FolderID,
|
||||
(ushort) invFolder.FolderData.Type,
|
||||
Util.FieldToString(invFolder.FolderData.Name),
|
||||
invFolder.FolderData.ParentID);
|
||||
}
|
||||
break;
|
||||
case PacketType.CreateInventoryItem:
|
||||
CreateInventoryItemPacket createItem = (CreateInventoryItemPacket)Pack;
|
||||
if (this.OnCreateNewInventoryItem != null)
|
||||
CreateInventoryItemPacket createItem = (CreateInventoryItemPacket) Pack;
|
||||
if (OnCreateNewInventoryItem != null)
|
||||
{
|
||||
this.OnCreateNewInventoryItem(this, createItem.InventoryBlock.TransactionID, createItem.InventoryBlock.FolderID, createItem.InventoryBlock.CallbackID,
|
||||
Util.FieldToString(createItem.InventoryBlock.Description), Util.FieldToString(createItem.InventoryBlock.Name), createItem.InventoryBlock.InvType,
|
||||
createItem.InventoryBlock.Type, createItem.InventoryBlock.WearableType, createItem.InventoryBlock.NextOwnerMask);
|
||||
OnCreateNewInventoryItem(this, createItem.InventoryBlock.TransactionID,
|
||||
createItem.InventoryBlock.FolderID,
|
||||
createItem.InventoryBlock.CallbackID,
|
||||
Util.FieldToString(createItem.InventoryBlock.Description),
|
||||
Util.FieldToString(createItem.InventoryBlock.Name),
|
||||
createItem.InventoryBlock.InvType,
|
||||
createItem.InventoryBlock.Type,
|
||||
createItem.InventoryBlock.WearableType,
|
||||
createItem.InventoryBlock.NextOwnerMask);
|
||||
}
|
||||
break;
|
||||
case PacketType.FetchInventory:
|
||||
if (this.OnFetchInventory != null)
|
||||
if (OnFetchInventory != null)
|
||||
{
|
||||
FetchInventoryPacket FetchInventory = (FetchInventoryPacket)Pack;
|
||||
FetchInventoryPacket FetchInventory = (FetchInventoryPacket) Pack;
|
||||
for (int i = 0; i < FetchInventory.InventoryData.Length; i++)
|
||||
{
|
||||
this.OnFetchInventory(this, FetchInventory.InventoryData[i].ItemID, FetchInventory.InventoryData[i].OwnerID);
|
||||
OnFetchInventory(this, FetchInventory.InventoryData[i].ItemID,
|
||||
FetchInventory.InventoryData[i].OwnerID);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case PacketType.FetchInventoryDescendents:
|
||||
if (this.OnFetchInventoryDescendents != null)
|
||||
if (OnFetchInventoryDescendents != null)
|
||||
{
|
||||
FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket)Pack;
|
||||
this.OnFetchInventoryDescendents(this, Fetch.InventoryData.FolderID, Fetch.InventoryData.OwnerID, Fetch.InventoryData.FetchFolders, Fetch.InventoryData.FetchItems, Fetch.InventoryData.SortOrder);
|
||||
FetchInventoryDescendentsPacket Fetch = (FetchInventoryDescendentsPacket) Pack;
|
||||
OnFetchInventoryDescendents(this, Fetch.InventoryData.FolderID, Fetch.InventoryData.OwnerID,
|
||||
Fetch.InventoryData.FetchFolders, Fetch.InventoryData.FetchItems,
|
||||
Fetch.InventoryData.SortOrder);
|
||||
}
|
||||
break;
|
||||
case PacketType.UpdateInventoryItem:
|
||||
UpdateInventoryItemPacket update = (UpdateInventoryItemPacket)Pack;
|
||||
UpdateInventoryItemPacket update = (UpdateInventoryItemPacket) Pack;
|
||||
if (OnUpdateInventoryItem != null)
|
||||
{
|
||||
for (int i = 0; i < update.InventoryData.Length; i++)
|
||||
{
|
||||
if (update.InventoryData[i].TransactionID != LLUUID.Zero)
|
||||
{
|
||||
OnUpdateInventoryItem(this, update.InventoryData[i].TransactionID, update.InventoryData[i].TransactionID.Combine(this.SecureSessionID), update.InventoryData[i].ItemID);
|
||||
OnUpdateInventoryItem(this, update.InventoryData[i].TransactionID,
|
||||
update.InventoryData[i].TransactionID.Combine(SecureSessionID),
|
||||
update.InventoryData[i].ItemID);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -488,25 +516,26 @@ namespace OpenSim.Region.ClientStack
|
||||
}*/
|
||||
break;
|
||||
case PacketType.RequestTaskInventory:
|
||||
RequestTaskInventoryPacket requesttask = (RequestTaskInventoryPacket)Pack;
|
||||
if (this.OnRequestTaskInventory != null)
|
||||
RequestTaskInventoryPacket requesttask = (RequestTaskInventoryPacket) Pack;
|
||||
if (OnRequestTaskInventory != null)
|
||||
{
|
||||
this.OnRequestTaskInventory(this, requesttask.InventoryData.LocalID);
|
||||
OnRequestTaskInventory(this, requesttask.InventoryData.LocalID);
|
||||
}
|
||||
break;
|
||||
case PacketType.UpdateTaskInventory:
|
||||
//Console.WriteLine(Pack.ToString());
|
||||
UpdateTaskInventoryPacket updatetask = (UpdateTaskInventoryPacket)Pack;
|
||||
UpdateTaskInventoryPacket updatetask = (UpdateTaskInventoryPacket) Pack;
|
||||
if (OnUpdateTaskInventory != null)
|
||||
{
|
||||
if (updatetask.UpdateData.Key == 0)
|
||||
{
|
||||
OnUpdateTaskInventory(this, updatetask.InventoryData.ItemID, updatetask.InventoryData.FolderID, updatetask.UpdateData.LocalID);
|
||||
OnUpdateTaskInventory(this, updatetask.InventoryData.ItemID,
|
||||
updatetask.InventoryData.FolderID, updatetask.UpdateData.LocalID);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case PacketType.RemoveTaskInventory:
|
||||
RemoveTaskInventoryPacket removeTask = (RemoveTaskInventoryPacket)Pack;
|
||||
RemoveTaskInventoryPacket removeTask = (RemoveTaskInventoryPacket) Pack;
|
||||
if (OnRemoveTaskItem != null)
|
||||
{
|
||||
OnRemoveTaskItem(this, removeTask.InventoryData.ItemID, removeTask.InventoryData.LocalID);
|
||||
@@ -517,38 +546,39 @@ namespace OpenSim.Region.ClientStack
|
||||
break;
|
||||
case PacketType.RezScript:
|
||||
//Console.WriteLine(Pack.ToString());
|
||||
RezScriptPacket rezScript = (RezScriptPacket)Pack;
|
||||
RezScriptPacket rezScript = (RezScriptPacket) Pack;
|
||||
if (OnRezScript != null)
|
||||
{
|
||||
OnRezScript(this, rezScript.InventoryBlock.ItemID, rezScript.UpdateBlock.ObjectLocalID);
|
||||
}
|
||||
break;
|
||||
case PacketType.MapLayerRequest:
|
||||
this.RequestMapLayer();
|
||||
RequestMapLayer();
|
||||
break;
|
||||
case PacketType.MapBlockRequest:
|
||||
MapBlockRequestPacket MapRequest = (MapBlockRequestPacket)Pack;
|
||||
MapBlockRequestPacket MapRequest = (MapBlockRequestPacket) Pack;
|
||||
if (OnRequestMapBlocks != null)
|
||||
{
|
||||
OnRequestMapBlocks(this, MapRequest.PositionData.MinX, MapRequest.PositionData.MinY, MapRequest.PositionData.MaxX, MapRequest.PositionData.MaxY);
|
||||
OnRequestMapBlocks(this, MapRequest.PositionData.MinX, MapRequest.PositionData.MinY,
|
||||
MapRequest.PositionData.MaxX, MapRequest.PositionData.MaxY);
|
||||
}
|
||||
break;
|
||||
case PacketType.TeleportLandmarkRequest:
|
||||
TeleportLandmarkRequestPacket tpReq = (TeleportLandmarkRequestPacket)Pack;
|
||||
TeleportLandmarkRequestPacket tpReq = (TeleportLandmarkRequestPacket) Pack;
|
||||
|
||||
TeleportStartPacket tpStart = new TeleportStartPacket();
|
||||
tpStart.Info.TeleportFlags = 8; // tp via lm
|
||||
this.OutPacket(tpStart);
|
||||
OutPacket(tpStart);
|
||||
|
||||
TeleportProgressPacket tpProgress = new TeleportProgressPacket();
|
||||
tpProgress.Info.Message = (new ASCIIEncoding()).GetBytes("sending_landmark");
|
||||
tpProgress.Info.TeleportFlags = 8;
|
||||
tpProgress.AgentData.AgentID = tpReq.Info.AgentID;
|
||||
this.OutPacket(tpProgress);
|
||||
OutPacket(tpProgress);
|
||||
|
||||
// Fetch landmark
|
||||
LLUUID lmid = tpReq.Info.LandmarkID;
|
||||
AssetBase lma = this.m_assetCache.GetAsset(lmid);
|
||||
AssetBase lma = m_assetCache.GetAsset(lmid);
|
||||
if (lma != null)
|
||||
{
|
||||
AssetLandmark lm = new AssetLandmark(lma);
|
||||
@@ -558,7 +588,7 @@ namespace OpenSim.Region.ClientStack
|
||||
TeleportLocalPacket tpLocal = new TeleportLocalPacket();
|
||||
|
||||
tpLocal.Info.AgentID = tpReq.Info.AgentID;
|
||||
tpLocal.Info.TeleportFlags = 8; // Teleport via landmark
|
||||
tpLocal.Info.TeleportFlags = 8; // Teleport via landmark
|
||||
tpLocal.Info.LocationID = 2;
|
||||
tpLocal.Info.Position = lm.Position;
|
||||
OutPacket(tpLocal);
|
||||
@@ -582,12 +612,13 @@ namespace OpenSim.Region.ClientStack
|
||||
}
|
||||
break;
|
||||
case PacketType.TeleportLocationRequest:
|
||||
TeleportLocationRequestPacket tpLocReq = (TeleportLocationRequestPacket)Pack;
|
||||
TeleportLocationRequestPacket tpLocReq = (TeleportLocationRequestPacket) Pack;
|
||||
// Console.WriteLine(tpLocReq.ToString());
|
||||
|
||||
if (OnTeleportLocationRequest != null)
|
||||
{
|
||||
OnTeleportLocationRequest(this, tpLocReq.Info.RegionHandle, tpLocReq.Info.Position, tpLocReq.Info.LookAt, 16);
|
||||
OnTeleportLocationRequest(this, tpLocReq.Info.RegionHandle, tpLocReq.Info.Position,
|
||||
tpLocReq.Info.LookAt, 16);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -598,76 +629,94 @@ namespace OpenSim.Region.ClientStack
|
||||
OutPacket(tpCancel);
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
|
||||
case PacketType.MoneyBalanceRequest:
|
||||
SendMoneyBalance(LLUUID.Zero, true, new byte[0], MoneyBalance);
|
||||
break;
|
||||
case PacketType.UUIDNameRequest:
|
||||
UUIDNameRequestPacket incoming = (UUIDNameRequestPacket)Pack;
|
||||
UUIDNameRequestPacket incoming = (UUIDNameRequestPacket) Pack;
|
||||
foreach (UUIDNameRequestPacket.UUIDNameBlockBlock UUIDBlock in incoming.UUIDNameBlock)
|
||||
{
|
||||
OnNameFromUUIDRequest(UUIDBlock.ID, this);
|
||||
}
|
||||
break;
|
||||
#region Parcel related packets
|
||||
|
||||
#region Parcel related packets
|
||||
|
||||
case PacketType.ParcelPropertiesRequest:
|
||||
ParcelPropertiesRequestPacket propertiesRequest = (ParcelPropertiesRequestPacket)Pack;
|
||||
ParcelPropertiesRequestPacket propertiesRequest = (ParcelPropertiesRequestPacket) Pack;
|
||||
if (OnParcelPropertiesRequest != null)
|
||||
{
|
||||
OnParcelPropertiesRequest((int)Math.Round(propertiesRequest.ParcelData.West), (int)Math.Round(propertiesRequest.ParcelData.South), (int)Math.Round(propertiesRequest.ParcelData.East), (int)Math.Round(propertiesRequest.ParcelData.North), propertiesRequest.ParcelData.SequenceID, propertiesRequest.ParcelData.SnapSelection, this);
|
||||
OnParcelPropertiesRequest((int) Math.Round(propertiesRequest.ParcelData.West),
|
||||
(int) Math.Round(propertiesRequest.ParcelData.South),
|
||||
(int) Math.Round(propertiesRequest.ParcelData.East),
|
||||
(int) Math.Round(propertiesRequest.ParcelData.North),
|
||||
propertiesRequest.ParcelData.SequenceID,
|
||||
propertiesRequest.ParcelData.SnapSelection, this);
|
||||
}
|
||||
break;
|
||||
case PacketType.ParcelDivide:
|
||||
ParcelDividePacket landDivide = (ParcelDividePacket)Pack;
|
||||
ParcelDividePacket landDivide = (ParcelDividePacket) Pack;
|
||||
if (OnParcelDivideRequest != null)
|
||||
{
|
||||
OnParcelDivideRequest((int)Math.Round(landDivide.ParcelData.West), (int)Math.Round(landDivide.ParcelData.South), (int)Math.Round(landDivide.ParcelData.East), (int)Math.Round(landDivide.ParcelData.North), this);
|
||||
OnParcelDivideRequest((int) Math.Round(landDivide.ParcelData.West),
|
||||
(int) Math.Round(landDivide.ParcelData.South),
|
||||
(int) Math.Round(landDivide.ParcelData.East),
|
||||
(int) Math.Round(landDivide.ParcelData.North), this);
|
||||
}
|
||||
break;
|
||||
case PacketType.ParcelJoin:
|
||||
ParcelJoinPacket landJoin = (ParcelJoinPacket)Pack;
|
||||
ParcelJoinPacket landJoin = (ParcelJoinPacket) Pack;
|
||||
if (OnParcelJoinRequest != null)
|
||||
{
|
||||
OnParcelJoinRequest((int)Math.Round(landJoin.ParcelData.West), (int)Math.Round(landJoin.ParcelData.South), (int)Math.Round(landJoin.ParcelData.East), (int)Math.Round(landJoin.ParcelData.North), this);
|
||||
OnParcelJoinRequest((int) Math.Round(landJoin.ParcelData.West),
|
||||
(int) Math.Round(landJoin.ParcelData.South),
|
||||
(int) Math.Round(landJoin.ParcelData.East),
|
||||
(int) Math.Round(landJoin.ParcelData.North), this);
|
||||
}
|
||||
break;
|
||||
case PacketType.ParcelPropertiesUpdate:
|
||||
ParcelPropertiesUpdatePacket updatePacket = (ParcelPropertiesUpdatePacket)Pack;
|
||||
ParcelPropertiesUpdatePacket updatePacket = (ParcelPropertiesUpdatePacket) Pack;
|
||||
if (OnParcelPropertiesUpdateRequest != null)
|
||||
{
|
||||
OnParcelPropertiesUpdateRequest(updatePacket, this);
|
||||
|
||||
}
|
||||
break;
|
||||
case PacketType.ParcelSelectObjects:
|
||||
ParcelSelectObjectsPacket selectPacket = (ParcelSelectObjectsPacket)Pack;
|
||||
ParcelSelectObjectsPacket selectPacket = (ParcelSelectObjectsPacket) Pack;
|
||||
if (OnParcelSelectObjects != null)
|
||||
{
|
||||
OnParcelSelectObjects(selectPacket.ParcelData.LocalID, Convert.ToInt32(selectPacket.ParcelData.ReturnType), this);
|
||||
OnParcelSelectObjects(selectPacket.ParcelData.LocalID,
|
||||
Convert.ToInt32(selectPacket.ParcelData.ReturnType), this);
|
||||
}
|
||||
break;
|
||||
|
||||
case PacketType.ParcelObjectOwnersRequest:
|
||||
ParcelObjectOwnersRequestPacket reqPacket = (ParcelObjectOwnersRequestPacket)Pack;
|
||||
ParcelObjectOwnersRequestPacket reqPacket = (ParcelObjectOwnersRequestPacket) Pack;
|
||||
if (OnParcelObjectOwnerRequest != null)
|
||||
{
|
||||
OnParcelObjectOwnerRequest(reqPacket.ParcelData.LocalID, this);
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region Estate Packets
|
||||
#endregion
|
||||
|
||||
#region Estate Packets
|
||||
|
||||
case PacketType.EstateOwnerMessage:
|
||||
EstateOwnerMessagePacket messagePacket = (EstateOwnerMessagePacket)Pack;
|
||||
EstateOwnerMessagePacket messagePacket = (EstateOwnerMessagePacket) Pack;
|
||||
if (OnEstateOwnerMessage != null)
|
||||
{
|
||||
OnEstateOwnerMessage(messagePacket, this);
|
||||
}
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#region unimplemented handlers
|
||||
#endregion
|
||||
|
||||
#region unimplemented handlers
|
||||
|
||||
case PacketType.AgentIsNowWearing:
|
||||
// AgentIsNowWearingPacket wear = (AgentIsNowWearingPacket)Pack;
|
||||
//Console.WriteLine(Pack.ToString());
|
||||
@@ -675,7 +724,8 @@ namespace OpenSim.Region.ClientStack
|
||||
case PacketType.ObjectScale:
|
||||
//OpenSim.Framework.Console.MainLog.Instance.Verbose( Pack.ToString());
|
||||
break;
|
||||
#endregion
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -721,4 +771,4 @@ namespace OpenSim.Region.ClientStack
|
||||
OutPacket(logReply);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -36,7 +36,7 @@ using libsecondlife.Packets;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Framework.Communications.Cache;
|
||||
using OpenSim.Framework.Console;
|
||||
using Timer = System.Timers.Timer;
|
||||
using Timer=System.Timers.Timer;
|
||||
|
||||
namespace OpenSim.Region.ClientStack
|
||||
{
|
||||
@@ -50,8 +50,11 @@ namespace OpenSim.Region.ClientStack
|
||||
{
|
||||
public static TerrainManager TerrainManager;
|
||||
|
||||
protected static Dictionary<PacketType, PacketMethod> PacketHandlers = new Dictionary<PacketType, PacketMethod>(); //Global/static handlers for all clients
|
||||
protected Dictionary<PacketType, PacketMethod> m_packetHandlers = new Dictionary<PacketType, PacketMethod>(); //local handlers for this instance
|
||||
protected static Dictionary<PacketType, PacketMethod> PacketHandlers =
|
||||
new Dictionary<PacketType, PacketMethod>(); //Global/static handlers for all clients
|
||||
|
||||
protected Dictionary<PacketType, PacketMethod> m_packetHandlers = new Dictionary<PacketType, PacketMethod>();
|
||||
//local handlers for this instance
|
||||
|
||||
private LLUUID m_sessionId;
|
||||
public LLUUID SecureSessionID = LLUUID.Zero;
|
||||
@@ -84,7 +87,9 @@ namespace OpenSim.Region.ClientStack
|
||||
private int probesWithNoIngressPackets = 0;
|
||||
private int lastPacketsReceived = 0;
|
||||
|
||||
public ClientView(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, ClientManager clientManager, IScene scene, AssetCache assetCache, PacketServer packServer, AgentCircuitManager authenSessions)
|
||||
public ClientView(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, ClientManager clientManager,
|
||||
IScene scene, AssetCache assetCache, PacketServer packServer,
|
||||
AgentCircuitManager authenSessions)
|
||||
{
|
||||
m_moneyBalance = 1000;
|
||||
|
||||
@@ -96,11 +101,11 @@ namespace OpenSim.Region.ClientStack
|
||||
// m_inventoryCache = inventoryCache;
|
||||
m_authenticateSessionsHandler = authenSessions;
|
||||
|
||||
MainLog.Instance.Verbose("CLIENT","Started up new client thread to handle incoming request");
|
||||
MainLog.Instance.Verbose("CLIENT", "Started up new client thread to handle incoming request");
|
||||
cirpack = initialcirpack;
|
||||
userEP = remoteEP;
|
||||
|
||||
this.startpos = m_authenticateSessionsHandler.GetPosition(initialcirpack.CircuitCode.Code);
|
||||
startpos = m_authenticateSessionsHandler.GetPosition(initialcirpack.CircuitCode.Code);
|
||||
|
||||
PacketQueue = new BlockingQueue<QueItem>();
|
||||
|
||||
@@ -109,7 +114,7 @@ namespace OpenSim.Region.ClientStack
|
||||
AckTimer.Elapsed += new ElapsedEventHandler(AckTimer_Elapsed);
|
||||
AckTimer.Start();
|
||||
|
||||
this.RegisterLocalPacketHandlers();
|
||||
RegisterLocalPacketHandlers();
|
||||
|
||||
ClientThread = new Thread(new ThreadStart(AuthUser));
|
||||
ClientThread.IsBackground = true;
|
||||
@@ -121,7 +126,7 @@ namespace OpenSim.Region.ClientStack
|
||||
get { return m_sessionId; }
|
||||
}
|
||||
|
||||
public void SetDebug(int newDebug)
|
||||
public void SetDebug(int newDebug)
|
||||
{
|
||||
debug = newDebug;
|
||||
}
|
||||
@@ -132,14 +137,15 @@ namespace OpenSim.Region.ClientStack
|
||||
{
|
||||
clientPingTimer.Stop();
|
||||
|
||||
m_scene.RemoveClient(this.AgentId);
|
||||
m_scene.RemoveClient(AgentId);
|
||||
|
||||
this.ClientThread.Abort();
|
||||
ClientThread.Abort();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
# region Packet Handling
|
||||
|
||||
public static bool AddPacketHandler(PacketType packetType, PacketMethod handler)
|
||||
{
|
||||
bool result = false;
|
||||
@@ -195,23 +201,27 @@ namespace OpenSim.Region.ClientStack
|
||||
|
||||
protected void DebugPacket(string direction, Packet packet)
|
||||
{
|
||||
if (debug > 0) {
|
||||
if (debug > 0)
|
||||
{
|
||||
string info;
|
||||
if (debug < 255 && packet.Type == PacketType.AgentUpdate)
|
||||
return;
|
||||
if (debug < 254 && packet.Type == PacketType.ViewerEffect)
|
||||
return;
|
||||
if (debug < 255 && packet.Type == PacketType.AgentUpdate)
|
||||
return;
|
||||
if (debug < 254 && packet.Type == PacketType.ViewerEffect)
|
||||
return;
|
||||
if (debug < 253 && (
|
||||
packet.Type == PacketType.CompletePingCheck ||
|
||||
packet.Type == PacketType.StartPingCheck
|
||||
) )
|
||||
return;
|
||||
if (debug < 252 && packet.Type == PacketType.PacketAck)
|
||||
return;
|
||||
packet.Type == PacketType.CompletePingCheck ||
|
||||
packet.Type == PacketType.StartPingCheck
|
||||
))
|
||||
return;
|
||||
if (debug < 252 && packet.Type == PacketType.PacketAck)
|
||||
return;
|
||||
|
||||
if (debug > 1) {
|
||||
if (debug > 1)
|
||||
{
|
||||
info = packet.ToString();
|
||||
} else {
|
||||
}
|
||||
else
|
||||
{
|
||||
info = packet.Type.ToString();
|
||||
}
|
||||
Console.WriteLine(m_circuitCode + ":" + direction + ": " + info);
|
||||
@@ -242,6 +252,7 @@ namespace OpenSim.Region.ClientStack
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# endregion
|
||||
|
||||
protected void CheckClientConnectivity(object sender, ElapsedEventArgs e)
|
||||
@@ -251,7 +262,7 @@ namespace OpenSim.Region.ClientStack
|
||||
probesWithNoIngressPackets++;
|
||||
if (probesWithNoIngressPackets > 30)
|
||||
{
|
||||
if( OnConnectionClosed != null )
|
||||
if (OnConnectionClosed != null)
|
||||
{
|
||||
OnConnectionClosed(this);
|
||||
}
|
||||
@@ -278,14 +289,16 @@ namespace OpenSim.Region.ClientStack
|
||||
clientPingTimer.Elapsed += new ElapsedEventHandler(CheckClientConnectivity);
|
||||
clientPingTimer.Enabled = true;
|
||||
|
||||
MainLog.Instance.Verbose("CLIENT","Adding viewer agent to scene");
|
||||
this.m_scene.AddNewClient(this, true);
|
||||
MainLog.Instance.Verbose("CLIENT", "Adding viewer agent to scene");
|
||||
m_scene.AddNewClient(this, true);
|
||||
}
|
||||
|
||||
protected virtual void AuthUser()
|
||||
{
|
||||
// AuthenticateResponse sessionInfo = m_gridServer.AuthenticateSession(cirpack.m_circuitCode.m_sessionId, cirpack.m_circuitCode.ID, cirpack.m_circuitCode.Code);
|
||||
AuthenticateResponse sessionInfo = this.m_authenticateSessionsHandler.AuthenticateSession(cirpack.CircuitCode.SessionID, cirpack.CircuitCode.ID, cirpack.CircuitCode.Code);
|
||||
AuthenticateResponse sessionInfo =
|
||||
m_authenticateSessionsHandler.AuthenticateSession(cirpack.CircuitCode.SessionID, cirpack.CircuitCode.ID,
|
||||
cirpack.CircuitCode.Code);
|
||||
if (!sessionInfo.Authorised)
|
||||
{
|
||||
//session/circuit not authorised
|
||||
@@ -297,27 +310,26 @@ namespace OpenSim.Region.ClientStack
|
||||
MainLog.Instance.Notice("CLIENT", "Got authenticated connection from " + userEP.ToString());
|
||||
//session is authorised
|
||||
m_agentId = cirpack.CircuitCode.ID;
|
||||
this.m_sessionId = cirpack.CircuitCode.SessionID;
|
||||
this.m_circuitCode = cirpack.CircuitCode.Code;
|
||||
this.firstName = sessionInfo.LoginInfo.First;
|
||||
this.lastName = sessionInfo.LoginInfo.Last;
|
||||
m_sessionId = cirpack.CircuitCode.SessionID;
|
||||
m_circuitCode = cirpack.CircuitCode.Code;
|
||||
firstName = sessionInfo.LoginInfo.First;
|
||||
lastName = sessionInfo.LoginInfo.Last;
|
||||
|
||||
if (sessionInfo.LoginInfo.SecureSession != LLUUID.Zero)
|
||||
{
|
||||
this.SecureSessionID = sessionInfo.LoginInfo.SecureSession;
|
||||
SecureSessionID = sessionInfo.LoginInfo.SecureSession;
|
||||
}
|
||||
InitNewClient();
|
||||
|
||||
ClientLoop();
|
||||
}
|
||||
}
|
||||
# endregion
|
||||
|
||||
# endregion
|
||||
|
||||
protected void KillThread()
|
||||
{
|
||||
this.ClientThread.Abort();
|
||||
ClientThread.Abort();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -25,15 +25,11 @@
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*/
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using System.Net.Sockets;
|
||||
using libsecondlife.Packets;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Framework.Communications.Cache;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using libsecondlife;
|
||||
|
||||
namespace OpenSim.Region.ClientStack
|
||||
{
|
||||
@@ -56,10 +52,7 @@ namespace OpenSim.Region.ClientStack
|
||||
|
||||
public IScene LocalScene
|
||||
{
|
||||
set
|
||||
{
|
||||
this.m_scene = value;
|
||||
}
|
||||
set { m_scene = value; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -72,17 +65,21 @@ namespace OpenSim.Region.ClientStack
|
||||
m_scene.ClientManager.InPacket(circuitCode, packet);
|
||||
}
|
||||
|
||||
protected virtual IClientAPI CreateNewClient(EndPoint remoteEP, UseCircuitCodePacket initialcirpack, ClientManager clientManager, IScene scene, AssetCache assetCache, PacketServer packServer, AgentCircuitManager authenSessions)
|
||||
protected virtual IClientAPI CreateNewClient(EndPoint remoteEP, UseCircuitCodePacket initialcirpack,
|
||||
ClientManager clientManager, IScene scene, AssetCache assetCache,
|
||||
PacketServer packServer, AgentCircuitManager authenSessions)
|
||||
{
|
||||
return new ClientView(remoteEP, initialcirpack, clientManager, scene, assetCache, packServer, authenSessions );
|
||||
return
|
||||
new ClientView(remoteEP, initialcirpack, clientManager, scene, assetCache, packServer, authenSessions);
|
||||
}
|
||||
|
||||
public virtual bool AddNewClient(EndPoint epSender, UseCircuitCodePacket useCircuit, AssetCache assetCache, AgentCircuitManager authenticateSessionsClass)
|
||||
public virtual bool AddNewClient(EndPoint epSender, UseCircuitCodePacket useCircuit, AssetCache assetCache,
|
||||
AgentCircuitManager authenticateSessionsClass)
|
||||
{
|
||||
IClientAPI newuser;
|
||||
|
||||
if (m_scene.ClientManager.TryGetClient(useCircuit.CircuitCode.Code, out newuser))
|
||||
{
|
||||
{
|
||||
return false;
|
||||
}
|
||||
else
|
||||
@@ -104,7 +101,7 @@ namespace OpenSim.Region.ClientStack
|
||||
{
|
||||
client.SendLogoutPacket();
|
||||
|
||||
CloseClient( client );
|
||||
CloseClient(client);
|
||||
}
|
||||
|
||||
|
||||
@@ -117,7 +114,7 @@ namespace OpenSim.Region.ClientStack
|
||||
/// <param name="circuitcode"></param>
|
||||
public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode)
|
||||
{
|
||||
this.m_networkHandler.SendPacketTo(buffer, size, flags, circuitcode);
|
||||
m_networkHandler.SendPacketTo(buffer, size, flags, circuitcode);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -126,13 +123,13 @@ namespace OpenSim.Region.ClientStack
|
||||
/// <param name="circuitcode"></param>
|
||||
public virtual void CloseCircuit(uint circuitcode)
|
||||
{
|
||||
m_networkHandler.RemoveClientCircuit( circuitcode );
|
||||
m_networkHandler.RemoveClientCircuit(circuitcode);
|
||||
m_scene.ClientManager.CloseAllAgents(circuitcode);
|
||||
}
|
||||
|
||||
public virtual void CloseClient( IClientAPI client )
|
||||
public virtual void CloseClient(IClientAPI client)
|
||||
{
|
||||
CloseCircuit( client.CircuitCode );
|
||||
CloseCircuit(client.CircuitCode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -28,17 +28,15 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Net;
|
||||
using libsecondlife;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Framework.Communications;
|
||||
using OpenSim.Framework.Communications.Cache;
|
||||
using OpenSim.Framework.Console;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
using OpenSim.Framework.Servers;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Region.Physics.Manager;
|
||||
using OpenSim.Region.Environment;
|
||||
using libsecondlife;
|
||||
using OpenSim.Region.Environment.Scenes;
|
||||
using OpenSim.Framework.Communications;
|
||||
using OpenSim.Region.Physics.Manager;
|
||||
|
||||
namespace OpenSim.Region.ClientStack
|
||||
{
|
||||
@@ -67,9 +65,8 @@ namespace OpenSim.Region.ClientStack
|
||||
m_startuptime = DateTime.Now;
|
||||
}
|
||||
|
||||
virtual public void StartUp()
|
||||
public virtual void StartUp()
|
||||
{
|
||||
|
||||
ClientView.TerrainManager = new TerrainManager(new SecondLife());
|
||||
|
||||
Initialize();
|
||||
@@ -116,7 +113,10 @@ namespace OpenSim.Region.ClientStack
|
||||
scene.PhysScene.SetTerrain(scene.Terrain.GetHeights1D());
|
||||
|
||||
//Master Avatar Setup
|
||||
UserProfileData masterAvatar = m_commsManager.UserService.SetupMasterUser(scene.RegionInfo.MasterAvatarFirstName, scene.RegionInfo.MasterAvatarLastName, scene.RegionInfo.MasterAvatarSandboxPassword);
|
||||
UserProfileData masterAvatar =
|
||||
m_commsManager.UserService.SetupMasterUser(scene.RegionInfo.MasterAvatarFirstName,
|
||||
scene.RegionInfo.MasterAvatarLastName,
|
||||
scene.RegionInfo.MasterAvatarSandboxPassword);
|
||||
if (masterAvatar != null)
|
||||
{
|
||||
m_log.Verbose("PARCEL", "Found master avatar [" + masterAvatar.UUID.ToStringHyphenated() + "]");
|
||||
@@ -126,7 +126,7 @@ namespace OpenSim.Region.ClientStack
|
||||
else
|
||||
{
|
||||
m_log.Verbose("PARCEL", "No master avatar found, using null.");
|
||||
scene.RegionInfo.MasterAvatarAssignedUUID = libsecondlife.LLUUID.Zero;
|
||||
scene.RegionInfo.MasterAvatarAssignedUUID = LLUUID.Zero;
|
||||
//TODO: Load parcels from storageManager
|
||||
}
|
||||
|
||||
@@ -138,8 +138,7 @@ namespace OpenSim.Region.ClientStack
|
||||
return scene;
|
||||
}
|
||||
|
||||
protected abstract Scene CreateScene(RegionInfo regionInfo, StorageManager storageManager, AgentCircuitManager circuitManager);
|
||||
|
||||
|
||||
protected abstract Scene CreateScene(RegionInfo regionInfo, StorageManager storageManager,
|
||||
AgentCircuitManager circuitManager);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -32,13 +32,10 @@ using System.Net.Sockets;
|
||||
using libsecondlife.Packets;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Framework.Communications.Cache;
|
||||
using OpenSim.Framework;
|
||||
using OpenSim.Framework.Console;
|
||||
using OpenSim.Framework.Interfaces;
|
||||
|
||||
namespace OpenSim.Region.ClientStack
|
||||
{
|
||||
|
||||
public class UDPServer : ClientStackNetworkHandler
|
||||
{
|
||||
protected Dictionary<EndPoint, uint> clientCircuits = new Dictionary<EndPoint, uint>();
|
||||
@@ -59,22 +56,16 @@ namespace OpenSim.Region.ClientStack
|
||||
|
||||
public PacketServer PacketServer
|
||||
{
|
||||
get
|
||||
{
|
||||
return m_packetServer;
|
||||
}
|
||||
set
|
||||
{
|
||||
m_packetServer = value;
|
||||
}
|
||||
get { return m_packetServer; }
|
||||
set { m_packetServer = value; }
|
||||
}
|
||||
|
||||
public IScene LocalScene
|
||||
{
|
||||
set
|
||||
{
|
||||
this.m_localScene = value;
|
||||
this.m_packetServer.LocalScene = this.m_localScene;
|
||||
m_localScene = value;
|
||||
m_packetServer.LocalScene = m_localScene;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,10 +76,10 @@ namespace OpenSim.Region.ClientStack
|
||||
public UDPServer(int port, AssetCache assetCache, LogBase console, AgentCircuitManager authenticateClass)
|
||||
{
|
||||
listenPort = port;
|
||||
this.m_assetCache = assetCache;
|
||||
this.m_log = console;
|
||||
this.m_authenticateSessionsClass = authenticateClass;
|
||||
this.CreatePacketServer();
|
||||
m_assetCache = assetCache;
|
||||
m_log = console;
|
||||
m_authenticateSessionsClass = authenticateClass;
|
||||
CreatePacketServer();
|
||||
}
|
||||
|
||||
protected virtual void CreatePacketServer()
|
||||
@@ -99,7 +90,7 @@ namespace OpenSim.Region.ClientStack
|
||||
protected virtual void OnReceivedData(IAsyncResult result)
|
||||
{
|
||||
ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0);
|
||||
epSender = (EndPoint)ipeSender;
|
||||
epSender = (EndPoint) ipeSender;
|
||||
Packet packet = null;
|
||||
|
||||
int numBytes;
|
||||
@@ -108,7 +99,7 @@ namespace OpenSim.Region.ClientStack
|
||||
{
|
||||
numBytes = Server.EndReceiveFrom(result, ref epSender);
|
||||
}
|
||||
catch (System.Net.Sockets.SocketException e)
|
||||
catch (SocketException e)
|
||||
{
|
||||
// TODO : Actually only handle those states that we have control over, re-throw everything else,
|
||||
// TODO: implement cases as we encounter them.
|
||||
@@ -134,7 +125,7 @@ namespace OpenSim.Region.ClientStack
|
||||
if (clientCircuits.TryGetValue(epSender, out circuit))
|
||||
{
|
||||
//if so then send packet to the packetserver
|
||||
this.m_packetServer.InPacket(circuit, packet);
|
||||
m_packetServer.InPacket(circuit, packet);
|
||||
}
|
||||
else if (packet.Type == PacketType.UseCircuitCode)
|
||||
{
|
||||
@@ -142,7 +133,8 @@ namespace OpenSim.Region.ClientStack
|
||||
AddNewClient(packet);
|
||||
}
|
||||
else
|
||||
{ // invalid client
|
||||
{
|
||||
// invalid client
|
||||
m_log.Warn("client", "Got a packet from an invalid client - " + epSender.ToString());
|
||||
}
|
||||
|
||||
@@ -160,10 +152,10 @@ namespace OpenSim.Region.ClientStack
|
||||
|
||||
protected virtual void AddNewClient(Packet packet)
|
||||
{
|
||||
UseCircuitCodePacket useCircuit = (UseCircuitCodePacket)packet;
|
||||
this.clientCircuits.Add(epSender, useCircuit.CircuitCode.Code);
|
||||
UseCircuitCodePacket useCircuit = (UseCircuitCodePacket) packet;
|
||||
clientCircuits.Add(epSender, useCircuit.CircuitCode.Code);
|
||||
|
||||
this.PacketServer.AddNewClient(epSender, useCircuit, m_assetCache, m_authenticateSessionsClass);
|
||||
PacketServer.AddNewClient(epSender, useCircuit, m_assetCache, m_authenticateSessionsClass);
|
||||
}
|
||||
|
||||
public void ServerListener()
|
||||
@@ -177,24 +169,24 @@ namespace OpenSim.Region.ClientStack
|
||||
m_log.Verbose("SERVER", "UDP socket bound, getting ready to listen");
|
||||
|
||||
ipeSender = new IPEndPoint(IPAddress.Parse("0.0.0.0"), 0);
|
||||
epSender = (EndPoint)ipeSender;
|
||||
ReceivedData = new AsyncCallback(this.OnReceivedData);
|
||||
epSender = (EndPoint) ipeSender;
|
||||
ReceivedData = new AsyncCallback(OnReceivedData);
|
||||
Server.BeginReceiveFrom(RecvBuffer, 0, RecvBuffer.Length, SocketFlags.None, ref epSender, ReceivedData, null);
|
||||
|
||||
m_log.Status("SERVER", "Listening...");
|
||||
|
||||
}
|
||||
|
||||
public virtual void RegisterPacketServer(PacketServer server)
|
||||
{
|
||||
this.m_packetServer = server;
|
||||
m_packetServer = server;
|
||||
}
|
||||
|
||||
public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode)//EndPoint packetSender)
|
||||
public virtual void SendPacketTo(byte[] buffer, int size, SocketFlags flags, uint circuitcode)
|
||||
//EndPoint packetSender)
|
||||
{
|
||||
// find the endpoint for this circuit
|
||||
EndPoint sendto = null;
|
||||
foreach (KeyValuePair<EndPoint, uint> p in this.clientCircuits)
|
||||
foreach (KeyValuePair<EndPoint, uint> p in clientCircuits)
|
||||
{
|
||||
if (p.Value == circuitcode)
|
||||
{
|
||||
@@ -205,22 +197,20 @@ namespace OpenSim.Region.ClientStack
|
||||
if (sendto != null)
|
||||
{
|
||||
//we found the endpoint so send the packet to it
|
||||
this.Server.SendTo(buffer, size, flags, sendto);
|
||||
Server.SendTo(buffer, size, flags, sendto);
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void RemoveClientCircuit(uint circuitcode)
|
||||
{
|
||||
foreach (KeyValuePair<EndPoint, uint> p in this.clientCircuits)
|
||||
foreach (KeyValuePair<EndPoint, uint> p in clientCircuits)
|
||||
{
|
||||
if (p.Value == circuitcode)
|
||||
{
|
||||
this.clientCircuits.Remove(p.Key);
|
||||
clientCircuits.Remove(p.Key);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user