/// <summary> /// Loads the data for the specified identifier using the specified serializable data inteface object. /// </summary> /// <param name="serializableData">The serializable data.</param> /// <param name="id">The identifier.</param> private static byte[] Load(ISerializableData serializableData, string id) { byte[] data = serializableData.LoadData(id); if (data == null) { Log.Debug(typeof(BinaryData), "Load", id, "-"); return(null); } Log.Debug(typeof(BinaryData), "Load", id, data.Length); if (data.Length > 0) { if (data.Length < 2) { throw new InvalidOperationException("Serialized data corruption"); } if (!FletcherChecksum.Validate(data, 0, data.Length)) { throw new InvalidOperationException("Serialized data corruption"); } Array.Resize(ref data, data.Length - 2); } return(data); }
/// <summary> /// Checks a local checksum using error-correction check-bytes. /// </summary> /// <returns>True if the checksum is valid.</returns> public void CheckLocalCheckSum() { this.AssureLeft(2); this.index += 2; if (!FletcherChecksum.Validate(this.serializedData, this.localCheckSumIndex, this.index)) { this.DeserializationError = true; throw new InvalidOperationException("Serialized data corruption!"); } }