From b67f88a3a21c446f0c30e52cea45d8ff28942ec0 Mon Sep 17 00:00:00 2001 From: Teravus Ovares Date: Sat, 10 May 2008 12:45:41 +0000 Subject: * Two more OutPacket refactors. TextureSender. * The split image packet sender doesn't like to be refactored (images don't load after it's been refactored), so left that as is for the moment. --- OpenSim/Framework/IClientAPI.cs | 2 ++ .../Region/ClientStack/LindenUDP/LLClientView.cs | 15 ++++++++++ .../Modules/Agent/TextureSender/TextureSender.cs | 33 ++++++++-------------- .../Region/Examples/SimpleModule/MyNpcCharacter.cs | 6 ++++ 4 files changed, 35 insertions(+), 21 deletions(-) diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs index 9927808..3ae90f3 100644 --- a/OpenSim/Framework/IClientAPI.cs +++ b/OpenSim/Framework/IClientAPI.cs @@ -936,6 +936,8 @@ namespace OpenSim.Framework void SendAssetUploadCompleteMessage(sbyte AssetType, bool Success, LLUUID AssetFullID); void SendConfirmXfer(ulong xferID, uint PacketID); void SendXferRequest(ulong XferID, short AssetType, LLUUID vFileID, byte FilePath, byte[] FileName); + + void SendImagePart(ushort numParts, LLUUID ImageUUID, uint ImageSize, byte[] ImageData, byte imageCodec); byte[] GetThrottlesPacked(float multiplier); diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 053b077..8721356 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs @@ -2229,6 +2229,21 @@ namespace OpenSim.Region.ClientStack.LindenUDP newPack.Header.Zerocoded = true; OutPacket(newPack, ThrottleOutPacketType.Asset); } + public void SendImagePart(ushort numParts, LLUUID ImageUUID, uint ImageSize, byte[] ImageData, byte imageCodec) + { + ImageDataPacket im = new ImageDataPacket(); + im.Header.Reliable = false; + im.ImageID.Packets = numParts; + im.ImageID.ID = ImageUUID; + + if (ImageSize > 0) + im.ImageID.Size = ImageSize; + + im.ImageData.Data = ImageData; + im.ImageID.Codec = imageCodec; + im.Header.Zerocoded = true; + OutPacket(im, ThrottleOutPacketType.Texture); + } #endregion #region Estate Data Sending Methods diff --git a/OpenSim/Region/Environment/Modules/Agent/TextureSender/TextureSender.cs b/OpenSim/Region/Environment/Modules/Agent/TextureSender/TextureSender.cs index e19274e..ea84436 100644 --- a/OpenSim/Region/Environment/Modules/Agent/TextureSender/TextureSender.cs +++ b/OpenSim/Region/Environment/Modules/Agent/TextureSender/TextureSender.cs @@ -150,37 +150,27 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureSender { if (NumPackets == 0) { - ImageDataPacket im = new ImageDataPacket(); - im.Header.Reliable = false; - im.ImageID.Packets = 1; - im.ImageID.ID = m_asset.FullID; - im.ImageID.Size = (uint) m_asset.Data.Length; - im.ImageData.Data = m_asset.Data; - im.ImageID.Codec = 2; - im.Header.Zerocoded = true; - RequestUser.OutPacket(im, ThrottleOutPacketType.Texture); + + RequestUser.SendImagePart(1, m_asset.FullID, (uint)m_asset.Data.Length, m_asset.Data, 2); + PacketCounter++; } else { - ImageDataPacket im = new ImageDataPacket(); - im.Header.Reliable = false; - im.ImageID.Packets = (ushort) (NumPackets); - im.ImageID.ID = m_asset.FullID; - im.ImageID.Size = (uint) m_asset.Data.Length; - im.ImageData.Data = new byte[600]; - Array.Copy(m_asset.Data, 0, im.ImageData.Data, 0, 600); - im.ImageID.Codec = 2; - im.Header.Zerocoded = true; - RequestUser.OutPacket(im, ThrottleOutPacketType.Texture); + + byte[] ImageData1 = new byte[600]; + Array.Copy(m_asset.Data, 0, ImageData1, 0, 600); + + RequestUser.SendImagePart((ushort)(NumPackets), m_asset.FullID, (uint)m_asset.Data.Length, ImageData1, 2); PacketCounter++; } } else { + // Doesn't like to be refactored... ImagePacketPacket im = new ImagePacketPacket(); im.Header.Reliable = false; - im.ImageID.Packet = (ushort) (PacketCounter); + im.ImageID.Packet = (ushort)(PacketCounter); im.ImageID.ID = m_asset.FullID; int size = m_asset.Data.Length - 600 - (1000 * (PacketCounter - 1)); if (size > 1000) size = 1000; @@ -195,8 +185,9 @@ namespace OpenSim.Region.Environment.Modules.Agent.TextureSender m_asset.FullID.ToString()); return; } - im.Header.Zerocoded = true; RequestUser.OutPacket(im, ThrottleOutPacketType.Texture); + + PacketCounter++; } } diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs index bc87e53..d14089b 100644 --- a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs +++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs @@ -522,13 +522,19 @@ namespace OpenSim.Region.Examples.SimpleModule public void SendAssetUploadCompleteMessage(sbyte AssetType, bool Success, LLUUID AssetFullID) { } + public void SendConfirmXfer(ulong xferID, uint PacketID) { } + public void SendXferRequest(ulong XferID, short AssetType, LLUUID vFileID, byte FilePath, byte[] FileName) { } + public void SendImagePart(ushort numParts, LLUUID ImageUUID, uint ImageSize, byte[] ImageData, byte imageCodec) + { + } + private void Update() { frame++; -- cgit v1.1