diff options
Diffstat (limited to 'OpenSim/Framework/Util.cs')
-rw-r--r-- | OpenSim/Framework/Util.cs | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/OpenSim/Framework/Util.cs b/OpenSim/Framework/Util.cs index e20b322..8cb9127 100644 --- a/OpenSim/Framework/Util.cs +++ b/OpenSim/Framework/Util.cs | |||
@@ -29,6 +29,7 @@ using System; | |||
29 | using System.Collections; | 29 | using System.Collections; |
30 | using System.Collections.Generic; | 30 | using System.Collections.Generic; |
31 | using System.Data; | 31 | using System.Data; |
32 | using System.Diagnostics; | ||
32 | using System.Globalization; | 33 | using System.Globalization; |
33 | using System.IO; | 34 | using System.IO; |
34 | using System.IO.Compression; | 35 | using System.IO.Compression; |
@@ -553,7 +554,7 @@ namespace OpenSim.Framework | |||
553 | } | 554 | } |
554 | catch (Exception e) | 555 | catch (Exception e) |
555 | { | 556 | { |
556 | m_log.ErrorFormat("[UTIL]: An error occurred while resolving {0}, {1}", dnsAddress, e); | 557 | m_log.WarnFormat("[UTIL]: An error occurred while resolving host name {0}, {1}", dnsAddress, e); |
557 | 558 | ||
558 | // Still going to throw the exception on for now, since this was what was happening in the first place | 559 | // Still going to throw the exception on for now, since this was what was happening in the first place |
559 | throw e; | 560 | throw e; |
@@ -1192,6 +1193,33 @@ namespace OpenSim.Framework | |||
1192 | return null; | 1193 | return null; |
1193 | } | 1194 | } |
1194 | 1195 | ||
1196 | public static OSDMap GetOSDMap(string data) | ||
1197 | { | ||
1198 | OSDMap args = null; | ||
1199 | try | ||
1200 | { | ||
1201 | OSD buffer; | ||
1202 | // We should pay attention to the content-type, but let's assume we know it's Json | ||
1203 | buffer = OSDParser.DeserializeJson(data); | ||
1204 | if (buffer.Type == OSDType.Map) | ||
1205 | { | ||
1206 | args = (OSDMap)buffer; | ||
1207 | return args; | ||
1208 | } | ||
1209 | else | ||
1210 | { | ||
1211 | // uh? | ||
1212 | m_log.Debug(("[UTILS]: Got OSD of unexpected type " + buffer.Type.ToString())); | ||
1213 | return null; | ||
1214 | } | ||
1215 | } | ||
1216 | catch (Exception ex) | ||
1217 | { | ||
1218 | m_log.Debug("[UTILS]: exception on GetOSDMap " + ex.Message); | ||
1219 | return null; | ||
1220 | } | ||
1221 | } | ||
1222 | |||
1195 | public static string[] Glob(string path) | 1223 | public static string[] Glob(string path) |
1196 | { | 1224 | { |
1197 | string vol=String.Empty; | 1225 | string vol=String.Empty; |
@@ -1416,6 +1444,7 @@ namespace OpenSim.Framework | |||
1416 | } | 1444 | } |
1417 | 1445 | ||
1418 | #endregion FireAndForget Threading Pattern | 1446 | #endregion FireAndForget Threading Pattern |
1447 | |||
1419 | /// <summary> | 1448 | /// <summary> |
1420 | /// Environment.TickCount is an int but it counts all 32 bits so it goes positive | 1449 | /// Environment.TickCount is an int but it counts all 32 bits so it goes positive |
1421 | /// and negative every 24.9 days. This trims down TickCount so it doesn't wrap | 1450 | /// and negative every 24.9 days. This trims down TickCount so it doesn't wrap |
@@ -1440,5 +1469,21 @@ namespace OpenSim.Framework | |||
1440 | Int32 diff = EnvironmentTickCount() - prevValue; | 1469 | Int32 diff = EnvironmentTickCount() - prevValue; |
1441 | return (diff >= 0) ? diff : (diff + EnvironmentTickCountMask + 1); | 1470 | return (diff >= 0) ? diff : (diff + EnvironmentTickCountMask + 1); |
1442 | } | 1471 | } |
1472 | |||
1473 | /// <summary> | ||
1474 | /// Prints the call stack at any given point. Useful for debugging. | ||
1475 | /// </summary> | ||
1476 | public static void PrintCallStack() | ||
1477 | { | ||
1478 | StackTrace stackTrace = new StackTrace(); // get call stack | ||
1479 | StackFrame[] stackFrames = stackTrace.GetFrames(); // get method calls (frames) | ||
1480 | |||
1481 | // write call stack method names | ||
1482 | foreach (StackFrame stackFrame in stackFrames) | ||
1483 | { | ||
1484 | m_log.Debug(stackFrame.GetMethod().DeclaringType + "." + stackFrame.GetMethod().Name); // write method name | ||
1485 | } | ||
1486 | } | ||
1487 | |||
1443 | } | 1488 | } |
1444 | } | 1489 | } |