aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Framework/ChildAgentDataUpdate.cs83
-rw-r--r--OpenSim/Framework/IClientAPI.cs2
-rw-r--r--OpenSim/Framework/WebUtil.cs19
3 files changed, 68 insertions, 36 deletions
diff --git a/OpenSim/Framework/ChildAgentDataUpdate.cs b/OpenSim/Framework/ChildAgentDataUpdate.cs
index 5beb37d..91df64d 100644
--- a/OpenSim/Framework/ChildAgentDataUpdate.cs
+++ b/OpenSim/Framework/ChildAgentDataUpdate.cs
@@ -431,6 +431,8 @@ namespace OpenSim.Framework
431 // The code to pack textures, visuals, wearables and attachments 431 // The code to pack textures, visuals, wearables and attachments
432 // should be removed; packed appearance contains the full appearance 432 // should be removed; packed appearance contains the full appearance
433 // This is retained for backward compatibility only 433 // This is retained for backward compatibility only
434
435/* then lets remove
434 if (Appearance.Texture != null) 436 if (Appearance.Texture != null)
435 { 437 {
436 byte[] rawtextures = Appearance.Texture.GetBytes(); 438 byte[] rawtextures = Appearance.Texture.GetBytes();
@@ -459,7 +461,7 @@ namespace OpenSim.Framework
459 args["attachments"] = attachs; 461 args["attachments"] = attachs;
460 } 462 }
461 // End of code to remove 463 // End of code to remove
462 464*/
463 if ((Controllers != null) && (Controllers.Length > 0)) 465 if ((Controllers != null) && (Controllers.Length > 0))
464 { 466 {
465 OSDArray controls = new OSDArray(Controllers.Length); 467 OSDArray controls = new OSDArray(Controllers.Length);
@@ -647,58 +649,71 @@ namespace OpenSim.Framework
647 // AgentTextures[i++] = o.AsUUID(); 649 // AgentTextures[i++] = o.AsUUID();
648 //} 650 //}
649 651
650 Appearance = new AvatarAppearance();
651 652
652 // The code to unpack textures, visuals, wearables and attachments 653 // packed_appearence should contain all appearance information
653 // should be removed; packed appearance contains the full appearance 654 if (args.ContainsKey("packed_appearance") && (args["packed_appearance"]).Type == OSDType.Map)
654 // This is retained for backward compatibility only
655 if (args["texture_entry"] != null)
656 { 655 {
657 byte[] rawtextures = args["texture_entry"].AsBinary(); 656 m_log.WarnFormat("[CHILDAGENTDATAUPDATE] got packed appearance");
658 Primitive.TextureEntry textures = new Primitive.TextureEntry(rawtextures,0,rawtextures.Length); 657 Appearance = new AvatarAppearance((OSDMap)args["packed_appearance"]);
659 Appearance.SetTextureEntries(textures);
660 } 658 }
659 else
660 {
661 // if missing try the old pack method
662 m_log.WarnFormat("[CHILDAGENTDATAUPDATE] No packed appearance, checking old method");
661 663
662 if (args["visual_params"] != null) 664 Appearance = new AvatarAppearance();
663 Appearance.SetVisualParams(args["visual_params"].AsBinary());
664 665
665 if ((args["wearables"] != null) && (args["wearables"]).Type == OSDType.Array) 666 // The code to unpack textures, visuals, wearables and attachments
666 { 667 // should be removed; packed appearance contains the full appearance
667 OSDArray wears = (OSDArray)(args["wearables"]); 668 // This is retained for backward compatibility only
669 if (args["texture_entry"] != null)
670 {
671 byte[] rawtextures = args["texture_entry"].AsBinary();
672 Primitive.TextureEntry textures = new Primitive.TextureEntry(rawtextures, 0, rawtextures.Length);
673 Appearance.SetTextureEntries(textures);
674 }
668 675
669 int count = wears.Count; 676 if (args["visual_params"] != null)
670 if (count > AvatarWearable.MAX_WEARABLES) 677 Appearance.SetVisualParams(args["visual_params"].AsBinary());
671 count = AvatarWearable.MAX_WEARABLES;
672 678
673 for (int i = 0; i < count / 2; i++) 679 if ((args["wearables"] != null) && (args["wearables"]).Type == OSDType.Array)
674 { 680 {
675 AvatarWearable awear = new AvatarWearable((OSDArray)wears[i]); 681 OSDArray wears = (OSDArray)(args["wearables"]);
676 Appearance.SetWearable(i,awear); 682
683 int count = wears.Count;
684 if (count > AvatarWearable.MAX_WEARABLES)
685 count = AvatarWearable.MAX_WEARABLES;
686
687 for (int i = 0; i < count / 2; i++)
688 {
689 AvatarWearable awear = new AvatarWearable((OSDArray)wears[i]);
690 Appearance.SetWearable(i, awear);
691 }
677 } 692 }
678 }
679 693
680 if ((args["attachments"] != null) && (args["attachments"]).Type == OSDType.Array) 694 if ((args["attachments"] != null) && (args["attachments"]).Type == OSDType.Array)
681 {
682 OSDArray attachs = (OSDArray)(args["attachments"]);
683 foreach (OSD o in attachs)
684 { 695 {
685 if (o.Type == OSDType.Map) 696 OSDArray attachs = (OSDArray)(args["attachments"]);
697 foreach (OSD o in attachs)
686 { 698 {
687 // We know all of these must end up as attachments so we 699 if (o.Type == OSDType.Map)
688 // append rather than replace to ensure multiple attachments 700 {
689 // per point continues to work 701 // We know all of these must end up as attachments so we
690// m_log.DebugFormat("[CHILDAGENTDATAUPDATE]: Appending attachments for {0}", AgentID); 702 // append rather than replace to ensure multiple attachments
691 Appearance.AppendAttachment(new AvatarAttachment((OSDMap)o)); 703 // per point continues to work
704 // m_log.DebugFormat("[CHILDAGENTDATAUPDATE]: Appending attachments for {0}", AgentID);
705 Appearance.AppendAttachment(new AvatarAttachment((OSDMap)o));
706 }
692 } 707 }
693 } 708 }
709 // end of code to remove
694 } 710 }
695 // end of code to remove 711/* moved above
696
697 if (args.ContainsKey("packed_appearance") && (args["packed_appearance"]).Type == OSDType.Map) 712 if (args.ContainsKey("packed_appearance") && (args["packed_appearance"]).Type == OSDType.Map)
698 Appearance = new AvatarAppearance((OSDMap)args["packed_appearance"]); 713 Appearance = new AvatarAppearance((OSDMap)args["packed_appearance"]);
699 else 714 else
700 m_log.WarnFormat("[CHILDAGENTDATAUPDATE] No packed appearance"); 715 m_log.WarnFormat("[CHILDAGENTDATAUPDATE] No packed appearance");
701 716*/
702 if ((args["controllers"] != null) && (args["controllers"]).Type == OSDType.Array) 717 if ((args["controllers"] != null) && (args["controllers"]).Type == OSDType.Array)
703 { 718 {
704 OSDArray controls = (OSDArray)(args["controllers"]); 719 OSDArray controls = (OSDArray)(args["controllers"]);
diff --git a/OpenSim/Framework/IClientAPI.cs b/OpenSim/Framework/IClientAPI.cs
index 22cc79d..3b0430b 100644
--- a/OpenSim/Framework/IClientAPI.cs
+++ b/OpenSim/Framework/IClientAPI.cs
@@ -755,6 +755,8 @@ namespace OpenSim.Framework
755 /// </summary> 755 /// </summary>
756 bool IsActive { get; set; } 756 bool IsActive { get; set; }
757 757
758 int PingTimeMS { get; }
759
758 /// <summary> 760 /// <summary>
759 /// Set if the client is closing due to a logout request 761 /// Set if the client is closing due to a logout request
760 /// </summary> 762 /// </summary>
diff --git a/OpenSim/Framework/WebUtil.cs b/OpenSim/Framework/WebUtil.cs
index 33ef8e0..86e5293 100644
--- a/OpenSim/Framework/WebUtil.cs
+++ b/OpenSim/Framework/WebUtil.cs
@@ -81,7 +81,7 @@ namespace OpenSim.Framework
81 /// Number of milliseconds a call can take before it is considered 81 /// Number of milliseconds a call can take before it is considered
82 /// a "long" call for warning & debugging purposes 82 /// a "long" call for warning & debugging purposes
83 /// </summary> 83 /// </summary>
84 public const int LongCallTime = 3000; 84 public const int LongCallTime = 500;
85 85
86 /// <summary> 86 /// <summary>
87 /// The maximum length of any data logged because of a long request time. 87 /// The maximum length of any data logged because of a long request time.
@@ -208,6 +208,9 @@ namespace OpenSim.Framework
208 string errorMessage = "unknown error"; 208 string errorMessage = "unknown error";
209 int tickstart = Util.EnvironmentTickCount(); 209 int tickstart = Util.EnvironmentTickCount();
210 int tickdata = 0; 210 int tickdata = 0;
211 int tickcompressdata = 0;
212 int tickJsondata = 0;
213 int compsize = 0;
211 string strBuffer = null; 214 string strBuffer = null;
212 215
213 try 216 try
@@ -225,6 +228,8 @@ namespace OpenSim.Framework
225 { 228 {
226 strBuffer = OSDParser.SerializeJsonString(data); 229 strBuffer = OSDParser.SerializeJsonString(data);
227 230
231 tickJsondata = Util.EnvironmentTickCountSubtract(tickstart);
232
228 if (DebugLevel >= 5) 233 if (DebugLevel >= 5)
229 LogOutgoingDetail(strBuffer); 234 LogOutgoingDetail(strBuffer);
230 235
@@ -243,13 +248,19 @@ namespace OpenSim.Framework
243 // gets written on the strteam upon Dispose() 248 // gets written on the strteam upon Dispose()
244 } 249 }
245 byte[] buf = ms.ToArray(); 250 byte[] buf = ms.ToArray();
251
252 tickcompressdata = Util.EnvironmentTickCountSubtract(tickstart);
253
246 request.ContentLength = buf.Length; //Count bytes to send 254 request.ContentLength = buf.Length; //Count bytes to send
255 compsize = buf.Length;
247 using (Stream requestStream = request.GetRequestStream()) 256 using (Stream requestStream = request.GetRequestStream())
248 requestStream.Write(buf, 0, (int)buf.Length); 257 requestStream.Write(buf, 0, (int)buf.Length);
249 } 258 }
250 } 259 }
251 else 260 else
252 { 261 {
262 tickcompressdata = tickJsondata;
263 compsize = buffer.Length;
253 request.ContentType = "application/json"; 264 request.ContentType = "application/json";
254 request.ContentLength = buffer.Length; //Count bytes to send 265 request.ContentLength = buffer.Length; //Count bytes to send
255 using (Stream requestStream = request.GetRequestStream()) 266 using (Stream requestStream = request.GetRequestStream())
@@ -291,12 +302,16 @@ namespace OpenSim.Framework
291 int tickdiff = Util.EnvironmentTickCountSubtract(tickstart); 302 int tickdiff = Util.EnvironmentTickCountSubtract(tickstart);
292 if (tickdiff > LongCallTime) 303 if (tickdiff > LongCallTime)
293 m_log.InfoFormat( 304 m_log.InfoFormat(
294 "[WEB UTIL]: Slow ServiceOSD request {0} {1} {2} took {3}ms, {4}ms writing, {5}", 305 "[WEB UTIL]: Slow ServiceOSD request {0} {1} {2} took {3}ms, {4}ms writing({5} at Json; {6} at comp), {7} bytes ({8} uncomp): {9}",
295 reqnum, 306 reqnum,
296 method, 307 method,
297 url, 308 url,
298 tickdiff, 309 tickdiff,
299 tickdata, 310 tickdata,
311 tickJsondata,
312 tickcompressdata,
313 compsize,
314 strBuffer != null ? strBuffer.Length : 0,
300 strBuffer != null 315 strBuffer != null
301 ? (strBuffer.Length > MaxRequestDiagLength ? strBuffer.Remove(MaxRequestDiagLength) : strBuffer) 316 ? (strBuffer.Length > MaxRequestDiagLength ? strBuffer.Remove(MaxRequestDiagLength) : strBuffer)
302 : ""); 317 : "");