private static void SaveLengthToStream(Stream stream, int length) { while (length >= 255) { MessageTraceCollapsedProperty.SaveSingleByteToStream(stream, byte.MaxValue); length -= 255; } MessageTraceCollapsedProperty.SaveSingleByteToStream(stream, (byte)length); }
private static bool SavePrimitiveValueToStream(Stream stream, Type typeOfvalue, object value) { if (typeOfvalue == typeof(long)) { MessageTraceCollapsedProperty.SaveByteArrayToStream(stream, BitConverter.GetBytes((long)value)); return(true); } if (typeOfvalue == typeof(int)) { MessageTraceCollapsedProperty.SaveByteArrayToStream(stream, BitConverter.GetBytes((int)value)); return(true); } if (typeOfvalue == typeof(Guid)) { MessageTraceCollapsedProperty.SaveByteArrayToStream(stream, ((Guid)value).ToByteArray()); return(true); } if (typeOfvalue == typeof(string)) { string text = value as string; if (Encoding.ASCII.GetString(Encoding.ASCII.GetBytes(text)) == text) { MessageTraceCollapsedProperty.SaveSingleByteToStream(stream, 2); MessageTraceCollapsedProperty.SaveByteArrayToStream(stream, Encoding.ASCII.GetBytes((string)value)); } else { MessageTraceCollapsedProperty.SaveSingleByteToStream(stream, 3); MessageTraceCollapsedProperty.SaveByteArrayToStream(stream, Encoding.Unicode.GetBytes((string)value)); } return(true); } if (typeOfvalue == typeof(DateTime)) { return(MessageTraceCollapsedProperty.SavePrimitiveValueToStream(stream, typeof(long), ((DateTime)value).ToBinary())); } if (MessageTraceCollapsedProperty.PrimitiveValueToByteArrayConvertor.ContainsKey(typeOfvalue)) { MessageTraceCollapsedProperty.SaveByteArrayToStream(stream, MessageTraceCollapsedProperty.PrimitiveValueToByteArrayConvertor[typeOfvalue](value)); return(true); } return(typeOfvalue.IsEnum && MessageTraceCollapsedProperty.SavePrimitiveValueToStream(stream, typeof(int), Convert.ToInt32(value))); }