webutil remove some not that usefull timing logs, plust some cosmetics
							parent
							
								
									f4dfe2159c
								
							
						
					
					
						commit
						fa0044fb6c
					
				|  | @ -45,8 +45,6 @@ using log4net; | |||
| using Nwc.XmlRpc; | ||||
| using OpenMetaverse.StructuredData; | ||||
| using OpenSim.Framework.ServiceAuth; | ||||
| using XMLResponseHelper = OpenSim.Framework.SynchronousRestObjectRequester.XMLResponseHelper; | ||||
| 
 | ||||
| 
 | ||||
| namespace OpenSim.Framework | ||||
| { | ||||
|  | @ -94,7 +92,6 @@ namespace OpenSim.Framework | |||
|         /// </remarks> | ||||
|         public const int MaxRequestDiagLength = 200; | ||||
| 
 | ||||
| 
 | ||||
|         public static bool ValidateServerCertificateNoChecks( | ||||
|             object sender, | ||||
|             X509Certificate certificate, | ||||
|  | @ -201,9 +198,6 @@ namespace OpenSim.Framework | |||
| 
 | ||||
|             string errorMessage = "unknown error"; | ||||
|             int tickstart = Util.EnvironmentTickCount(); | ||||
|             int tickdata = 0; | ||||
|             int tickcompressdata = 0; | ||||
|             int tickJsondata = 0; | ||||
|             int compsize = 0; | ||||
|             string strBuffer = null; | ||||
| 
 | ||||
|  | @ -222,8 +216,6 @@ namespace OpenSim.Framework | |||
|                 { | ||||
|                     strBuffer = OSDParser.SerializeJsonString(data); | ||||
| 
 | ||||
|                     tickJsondata = Util.EnvironmentTickCountSubtract(tickstart); | ||||
| 
 | ||||
|                     if (DebugLevel >= 5) | ||||
|                         LogOutgoingDetail("SEND", reqnum, strBuffer); | ||||
| 
 | ||||
|  | @ -240,14 +232,9 @@ namespace OpenSim.Framework | |||
|                             using (GZipStream comp = new GZipStream(ms, CompressionMode.Compress, true)) | ||||
|                             { | ||||
|                                 comp.Write(buffer, 0, buffer.Length); | ||||
|                                 // We need to close the gzip stream before we write it anywhere | ||||
|                                 // because apparently something important related to gzip compression | ||||
|                                 // gets written on the stream upon Dispose() | ||||
|                             } | ||||
|                              } | ||||
|                             byte[] buf = ms.ToArray(); | ||||
| 
 | ||||
|                             tickcompressdata = Util.EnvironmentTickCountSubtract(tickstart); | ||||
| 
 | ||||
|                             request.ContentLength = buf.Length;   //Count bytes to send | ||||
|                             compsize = buf.Length; | ||||
|                             using (Stream requestStream = request.GetRequestStream()) | ||||
|  | @ -264,10 +251,6 @@ namespace OpenSim.Framework | |||
|                     } | ||||
|                 } | ||||
| 
 | ||||
|                 // capture how much time was spent writing, this may seem silly | ||||
|                 // but with the number concurrent requests, this often blocks | ||||
|                 tickdata = Util.EnvironmentTickCountSubtract(tickstart); | ||||
| 
 | ||||
|                 using (WebResponse response = request.GetResponse()) | ||||
|                 { | ||||
|                     using (Stream responseStream = response.GetResponseStream()) | ||||
|  | @ -302,14 +285,11 @@ namespace OpenSim.Framework | |||
|                 if (tickdiff > LongCallTime) | ||||
|                 { | ||||
|                     m_log.InfoFormat( | ||||
|                         "[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}", | ||||
|                         "[WEB UTIL]: Slow ServiceOSD request {0} {1} {2} took {3}ms, {7} bytes ({8} uncomp): {9}", | ||||
|                         reqnum, | ||||
|                         method, | ||||
|                         url, | ||||
|                         tickdiff, | ||||
|                         tickdata, | ||||
|                         tickJsondata, | ||||
|                         tickcompressdata, | ||||
|                         compsize, | ||||
|                         strBuffer != null ? strBuffer.Length : 0, | ||||
| 
 | ||||
|  | @ -319,8 +299,8 @@ namespace OpenSim.Framework | |||
|                 } | ||||
|                 else if (DebugLevel >= 4) | ||||
|                 { | ||||
|                     m_log.DebugFormat("[LOGHTTP]: HTTP OUT {0} took {1}ms, {2}ms writing", | ||||
|                         reqnum, tickdiff, tickdata); | ||||
|                     m_log.DebugFormat("[LOGHTTP]: HTTP OUT {0} took {1}ms", | ||||
|                         reqnum, tickdiff); | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|  | @ -816,6 +796,7 @@ namespace OpenSim.Framework | |||
|             request.Method = verb; | ||||
| 
 | ||||
|             MemoryStream buffer = null; | ||||
|             byte[] data = null; | ||||
| 
 | ||||
|             try | ||||
|             { | ||||
|  | @ -827,17 +808,16 @@ namespace OpenSim.Framework | |||
| 
 | ||||
|                     XmlWriterSettings settings = new XmlWriterSettings(); | ||||
|                     settings.Encoding = Encoding.UTF8; | ||||
| 
 | ||||
|                     using (XmlWriter writer = XmlWriter.Create(buffer, settings)) | ||||
|                     { | ||||
|                         XmlSerializer serializer = new XmlSerializer(type); | ||||
|                         serializer.Serialize(writer, obj); | ||||
|                         writer.Flush(); | ||||
|                         data = buffer.ToArray(); | ||||
|                     } | ||||
| 
 | ||||
|                     int length = (int)buffer.Length; | ||||
|                     int length = data.Length; | ||||
|                     request.ContentLength = length; | ||||
|                     byte[] data = buffer.ToArray(); | ||||
| 
 | ||||
|                     if (WebUtil.DebugLevel >= 5) | ||||
|                         WebUtil.LogOutgoingDetail("SEND", reqnum, System.Text.Encoding.UTF8.GetString(data)); | ||||
|  | @ -949,9 +929,9 @@ namespace OpenSim.Framework | |||
|                 { | ||||
|                     string originalRequest = null; | ||||
| 
 | ||||
|                     if (buffer != null) | ||||
|                     if (data != null) | ||||
|                     { | ||||
|                         originalRequest = Encoding.UTF8.GetString(buffer.ToArray()); | ||||
|                         originalRequest = Encoding.UTF8.GetString(data); | ||||
| 
 | ||||
|                         if (originalRequest.Length > WebUtil.MaxRequestDiagLength) | ||||
|                             originalRequest = originalRequest.Remove(WebUtil.MaxRequestDiagLength); | ||||
|  | @ -970,7 +950,7 @@ namespace OpenSim.Framework | |||
|             } | ||||
|             finally | ||||
|             { | ||||
|                 if (buffer != null) | ||||
|                 if (buffer != null && buffer.CanRead) | ||||
|                     buffer.Dispose(); | ||||
|             } | ||||
|         } | ||||
|  | @ -1017,62 +997,53 @@ namespace OpenSim.Framework | |||
| 
 | ||||
|             int tickset = Util.EnvironmentTickCountSubtract(tickstart); | ||||
| 
 | ||||
|             using (MemoryStream buffer = new MemoryStream()) | ||||
|             if ((verb == "POST") || (verb == "PUT")) | ||||
|             { | ||||
|                 if ((verb == "POST") || (verb == "PUT")) | ||||
|                 { | ||||
|                     request.ContentType = "application/x-www-form-urlencoded"; | ||||
|                 request.ContentType = "application/x-www-form-urlencoded"; | ||||
| 
 | ||||
|                     int length = 0; | ||||
|                     using (StreamWriter writer = new StreamWriter(buffer)) | ||||
|                     { | ||||
|                         writer.Write(obj); | ||||
|                         writer.Flush(); | ||||
|                     } | ||||
|                 byte[] data = Util.UTF8NBGetbytes(obj); | ||||
|                 int length = data.Length; | ||||
|                 request.ContentLength = length; | ||||
| 
 | ||||
|                     length = (int)obj.Length; | ||||
|                     request.ContentLength = length; | ||||
|                     byte[] data = buffer.ToArray(); | ||||
| 
 | ||||
|                     if (WebUtil.DebugLevel >= 5) | ||||
|                         WebUtil.LogOutgoingDetail("SEND", reqnum, System.Text.Encoding.UTF8.GetString(data)); | ||||
| 
 | ||||
|                     try | ||||
|                     { | ||||
|                         using(Stream requestStream = request.GetRequestStream()) | ||||
|                             requestStream.Write(data,0,length); | ||||
|                     } | ||||
|                     catch (Exception e) | ||||
|                     { | ||||
|                         m_log.InfoFormat("[FORMS]: Error sending request to {0}: {1}. Request: {2}", requestUrl, e.Message, | ||||
|                             obj.Length > WebUtil.MaxRequestDiagLength ? obj.Remove(WebUtil.MaxRequestDiagLength) : obj); | ||||
|                         throw e; | ||||
|                     } | ||||
|                     finally | ||||
|                     { | ||||
|                         // capture how much time was spent writing | ||||
|                         tickdata = Util.EnvironmentTickCountSubtract(tickstart); | ||||
|                     } | ||||
|                 } | ||||
|                 if (WebUtil.DebugLevel >= 5) | ||||
|                     WebUtil.LogOutgoingDetail("SEND", reqnum, System.Text.Encoding.UTF8.GetString(data)); | ||||
| 
 | ||||
|                 try | ||||
|                 { | ||||
|                     using (WebResponse resp = request.GetResponse()) | ||||
|                     { | ||||
|                         if (resp.ContentLength != 0) | ||||
|                         { | ||||
|                             using (Stream respStream = resp.GetResponseStream()) | ||||
|                                 using (StreamReader reader = new StreamReader(respStream)) | ||||
|                                     respstring = reader.ReadToEnd(); | ||||
|                         } | ||||
|                     } | ||||
|                     using(Stream requestStream = request.GetRequestStream()) | ||||
|                         requestStream.Write(data,0,length); | ||||
|                 } | ||||
|                 catch (Exception e) | ||||
|                 { | ||||
|                     m_log.InfoFormat("[FORMS]: Error receiving response from {0}: {1}. Request: {2}", requestUrl, e.Message, | ||||
|                     m_log.InfoFormat("[FORMS]: Error sending request to {0}: {1}. Request: {2}", requestUrl, e.Message, | ||||
|                         obj.Length > WebUtil.MaxRequestDiagLength ? obj.Remove(WebUtil.MaxRequestDiagLength) : obj); | ||||
|                     throw e; | ||||
|                 } | ||||
|                 finally | ||||
|                 { | ||||
|                     // capture how much time was spent writing | ||||
|                     tickdata = Util.EnvironmentTickCountSubtract(tickstart); | ||||
|                     data = null; | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             try | ||||
|             { | ||||
|                 using (WebResponse resp = request.GetResponse()) | ||||
|                 { | ||||
|                     if (resp.ContentLength != 0) | ||||
|                     { | ||||
|                         using (Stream respStream = resp.GetResponseStream()) | ||||
|                             using (StreamReader reader = new StreamReader(respStream)) | ||||
|                                 respstring = reader.ReadToEnd(); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 m_log.InfoFormat("[FORMS]: Error receiving response from {0}: {1}. Request: {2}", requestUrl, e.Message, | ||||
|                     obj.Length > WebUtil.MaxRequestDiagLength ? obj.Remove(WebUtil.MaxRequestDiagLength) : obj); | ||||
|                 throw e; | ||||
|             } | ||||
| 
 | ||||
|             int tickdiff = Util.EnvironmentTickCountSubtract(tickstart); | ||||
|  | @ -1100,10 +1071,97 @@ namespace OpenSim.Framework | |||
|             return respstring; | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         public static string MakeRequest(string verb, string requestUrl, string obj, IServiceAuth auth) | ||||
|         { | ||||
|             return MakeRequest(verb, requestUrl, obj, -1, auth); | ||||
|         } | ||||
| 
 | ||||
|         public static string MakePostRequest(string requestUrl, string obj, | ||||
|                  IServiceAuth auth = null, int timeoutsecs = -1, bool keepalive = true) | ||||
|         { | ||||
|             int reqnum = WebUtil.RequestNumber++; | ||||
| 
 | ||||
|             if (WebUtil.DebugLevel >= 3) | ||||
|                 m_log.DebugFormat("[LOGHTTP]: HTTP OUT {0} SynchronousRestForms POST to {1}", | ||||
|                     reqnum, requestUrl); | ||||
| 
 | ||||
|             int tickstart = Util.EnvironmentTickCount(); | ||||
| 
 | ||||
|             WebRequest request = WebRequest.Create(requestUrl); | ||||
|             request.Method = "POST"; | ||||
|             if (timeoutsecs > 0) | ||||
|                 request.Timeout = timeoutsecs * 1000; | ||||
|             if (!keepalive && request is HttpWebRequest) | ||||
|                 ((HttpWebRequest)request).KeepAlive = false; | ||||
| 
 | ||||
|             if (auth != null) | ||||
|                 auth.AddAuthorization(request.Headers); | ||||
| 
 | ||||
|             string respstring = String.Empty; | ||||
| 
 | ||||
|             request.ContentType = "application/x-www-form-urlencoded"; | ||||
| 
 | ||||
|             byte[] data = Util.UTF8NBGetbytes(obj); | ||||
|             int length = data.Length; | ||||
|             request.ContentLength = length; | ||||
| 
 | ||||
|             if (WebUtil.DebugLevel >= 5) | ||||
|                 WebUtil.LogOutgoingDetail("SEND", reqnum, System.Text.Encoding.UTF8.GetString(data)); | ||||
| 
 | ||||
|             try | ||||
|             { | ||||
|                 using (Stream requestStream = request.GetRequestStream()) | ||||
|                     requestStream.Write(data, 0, length); | ||||
|                 data = null; | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 m_log.InfoFormat("[FORMS]: Error sending request to {0}: {1}. Request: {2}", requestUrl, e.Message, | ||||
|                     obj.Length > WebUtil.MaxRequestDiagLength ? obj.Remove(WebUtil.MaxRequestDiagLength) : obj); | ||||
|                 throw e; | ||||
|             } | ||||
| 
 | ||||
|             try | ||||
|             { | ||||
|                 using (WebResponse resp = request.GetResponse()) | ||||
|                 { | ||||
|                     if (resp.ContentLength != 0) | ||||
|                     { | ||||
|                         using (Stream respStream = resp.GetResponseStream()) | ||||
|                         using (StreamReader reader = new StreamReader(respStream)) | ||||
|                             respstring = reader.ReadToEnd(); | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|             catch (Exception e) | ||||
|             { | ||||
|                 m_log.InfoFormat("[FORMS]: Error receiving response from {0}: {1}. Request: {2}", requestUrl, e.Message, | ||||
|                     obj.Length > WebUtil.MaxRequestDiagLength ? obj.Remove(WebUtil.MaxRequestDiagLength) : obj); | ||||
|                 throw e; | ||||
|             } | ||||
| 
 | ||||
|             int tickdiff = Util.EnvironmentTickCountSubtract(tickstart); | ||||
|             if (tickdiff > WebUtil.LongCallTime) | ||||
|             { | ||||
|                 m_log.InfoFormat( | ||||
|                     "[FORMS]: Slow request {0} POST {1} took {2}ms {3}", | ||||
|                     reqnum, | ||||
|                     requestUrl, | ||||
|                     tickdiff, | ||||
|                     obj.Length > WebUtil.MaxRequestDiagLength ? obj.Remove(WebUtil.MaxRequestDiagLength) : obj); | ||||
|             } | ||||
|             else if (WebUtil.DebugLevel >= 4) | ||||
|             { | ||||
|                 m_log.DebugFormat("[LOGHTTP]: HTTP OUT {0} took {1}ms", | ||||
|                     reqnum, tickdiff); | ||||
|             } | ||||
| 
 | ||||
|             if (WebUtil.DebugLevel >= 5) | ||||
|                 WebUtil.LogResponseDetail(reqnum, respstring); | ||||
| 
 | ||||
|             return respstring; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     public class SynchronousRestObjectRequester | ||||
|  | @ -1218,21 +1276,19 @@ namespace OpenSim.Framework | |||
|                 { | ||||
|                     request.ContentType = "text/xml"; | ||||
| 
 | ||||
|                     buffer = new MemoryStream(); | ||||
| 
 | ||||
|                     XmlWriterSettings settings = new XmlWriterSettings(); | ||||
|                     settings.Encoding = Encoding.UTF8; | ||||
| 
 | ||||
|                     using (XmlWriter writer = XmlWriter.Create(buffer, settings)) | ||||
|                     byte[] data; | ||||
|                     XmlWriterSettings settings = new XmlWriterSettings(){CloseOutput = true, Encoding = Util.UTF8}; | ||||
|                     MemoryStream ms = new MemoryStream(); | ||||
|                     using (XmlWriter writer = XmlWriter.Create(ms, settings)) | ||||
|                     { | ||||
|                         XmlSerializer serializer = new XmlSerializer(type); | ||||
|                         serializer.Serialize(writer, obj); | ||||
|                         writer.Flush(); | ||||
|                         data = ms.ToArray(); | ||||
|                     } | ||||
| 
 | ||||
|                     int length = (int)buffer.Length; | ||||
|                     int length = data.Length; | ||||
|                     request.ContentLength = length; | ||||
|                     byte[] data = buffer.ToArray(); | ||||
| 
 | ||||
|                     if (WebUtil.DebugLevel >= 5) | ||||
|                         WebUtil.LogOutgoingDetail("SEND", reqnum, System.Text.Encoding.UTF8.GetString(data)); | ||||
|  | @ -1351,58 +1407,57 @@ namespace OpenSim.Framework | |||
| 
 | ||||
|             return deserial; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|         public static class XMLResponseHelper | ||||
|     public static class XMLResponseHelper | ||||
|     { | ||||
|         public static TResponse LogAndDeserialize<TRequest, TResponse>(int reqnum, Stream respStream, long contentLength) | ||||
|         { | ||||
|             public static TResponse LogAndDeserialize<TRequest, TResponse>(int reqnum, Stream respStream, long contentLength) | ||||
|             XmlSerializer deserializer = new XmlSerializer(typeof(TResponse)); | ||||
|             if (WebUtil.DebugLevel >= 5) | ||||
|             { | ||||
|                 XmlSerializer deserializer = new XmlSerializer(typeof(TResponse)); | ||||
|                 if (WebUtil.DebugLevel >= 5) | ||||
|                 const int blockLength = 4096; | ||||
|                 byte[] dataBuffer = new byte[blockLength]; | ||||
|                 int curcount; | ||||
|                 using (MemoryStream ms = new MemoryStream(4 * blockLength)) | ||||
|                 { | ||||
|                     const int blockLength = 4096; | ||||
|                     byte[] dataBuffer = new byte[blockLength]; | ||||
|                     int curcount; | ||||
|                     using (MemoryStream ms = new MemoryStream(4 * blockLength)) | ||||
|                     if(contentLength == -1) | ||||
|                     { | ||||
|                         if(contentLength == -1) | ||||
|                         while (true) | ||||
|                         { | ||||
|                             while (true) | ||||
|                             { | ||||
|                                 curcount = respStream.Read(dataBuffer, 0, blockLength); | ||||
|                                 if (curcount <= 0) | ||||
|                                     break; | ||||
|                                 ms.Write(dataBuffer, 0, curcount); | ||||
|                             } | ||||
|                             curcount = respStream.Read(dataBuffer, 0, blockLength); | ||||
|                             if (curcount <= 0) | ||||
|                                 break; | ||||
|                             ms.Write(dataBuffer, 0, curcount); | ||||
|                         } | ||||
|                         else | ||||
|                         { | ||||
|                             int remaining = (int)contentLength; | ||||
|                             while (remaining > 0) | ||||
|                             { | ||||
|                                 curcount = respStream.Read(dataBuffer, 0, remaining); | ||||
|                                 if (curcount <= 0) | ||||
|                                     throw new EndOfStreamException(String.Format("End of stream reached with {0} bytes left to read", remaining)); | ||||
|                                 ms.Write(dataBuffer, 0, curcount); | ||||
|                                 remaining -= curcount; | ||||
|                             } | ||||
|                         } | ||||
| 
 | ||||
|                         dataBuffer = ms.ToArray(); | ||||
|                         WebUtil.LogResponseDetail(reqnum, System.Text.Encoding.UTF8.GetString(dataBuffer)); | ||||
| 
 | ||||
|                         ms.Position = 0; | ||||
|                         return (TResponse)deserializer.Deserialize(ms); | ||||
|                     } | ||||
|                     else | ||||
|                     { | ||||
|                         int remaining = (int)contentLength; | ||||
|                         while (remaining > 0) | ||||
|                         { | ||||
|                             curcount = respStream.Read(dataBuffer, 0, remaining); | ||||
|                             if (curcount <= 0) | ||||
|                                 throw new EndOfStreamException(String.Format("End of stream reached with {0} bytes left to read", remaining)); | ||||
|                             ms.Write(dataBuffer, 0, curcount); | ||||
|                             remaining -= curcount; | ||||
|                         } | ||||
|                     } | ||||
| 
 | ||||
|                     dataBuffer = ms.ToArray(); | ||||
|                     WebUtil.LogResponseDetail(reqnum, System.Text.Encoding.UTF8.GetString(dataBuffer)); | ||||
| 
 | ||||
|                     ms.Position = 0; | ||||
|                     return (TResponse)deserializer.Deserialize(ms); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     return (TResponse)deserializer.Deserialize(respStream); | ||||
|                 } | ||||
|             } | ||||
|             else | ||||
|             { | ||||
|                 return (TResponse)deserializer.Deserialize(respStream); | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| 
 | ||||
|     public static class XMLRPCRequester | ||||
|     { | ||||
|         private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); | ||||
|  | @ -1436,11 +1491,12 @@ namespace OpenSim.Framework | |||
| 
 | ||||
|                 try | ||||
|                 { | ||||
|                     responseStr = Resp.ToString(); | ||||
|                     responseStr = XElement.Parse(responseStr).ToString(SaveOptions.DisableFormatting); | ||||
| 
 | ||||
|                     if (WebUtil.DebugLevel >= 5) | ||||
|                     { | ||||
|                         responseStr = Resp.ToString(); | ||||
|                         responseStr = XElement.Parse(responseStr).ToString(SaveOptions.DisableFormatting); | ||||
|                         WebUtil.LogResponseDetail(reqnum, responseStr); | ||||
|                     } | ||||
|                 } | ||||
|                 catch (Exception e) | ||||
|                 { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 UbitUmarov
						UbitUmarov