public WriteLength ( bool recoverStreamPosition ) : void | ||
recoverStreamPosition | bool | |
return | void |
public void WriteLength(bool recoverStreamPosition)
{
_endPosition = _stream.Position;
var len = Length;
_stream.Seek(_startPosition, SeekOrigin.Begin);
var lenBytes = BitConverter.GetBytes(len);
_stream.Write(lenBytes, 0, lenBytes.Length);
if (recoverStreamPosition)
_stream.Seek(_endPosition, SeekOrigin.Begin);
}
}
public void Serialize(Stream dest, Exception value) { if (dest == null) throw new ArgumentNullException("dest"); if (value == null) throw new ArgumentNullException("value"); var type = value.GetType(); int typeAlias = _data.TypeTable.GetAlias(type); var typeSerializable = _data.MessageSerializer.CanSerialize(type); dest.WriteByte((byte)((typeAlias != 0 ? 1 : 0) | (typeSerializable ? 2 : 0))); if (typeAlias != 0) dest.Write32BitEncodedInt(typeAlias); else dest.WriteString(type.FullName); if (typeSerializable) { var lengthMarker = new StreamLengthMarker(dest, true); _data.MessageSerializer.Serialize(dest, value); lengthMarker.WriteLength(true); } }