private void GraphInit() { ErrorCode err; XmlElement graph = myIohandler.ReadFile(out err); if (err != ErrorCode.NoError) { throw new Exception($"Error found during read DB file. Error Code:{err}"); } var nodes = graph.GetNode(XmlNames.Nodes); var edges = graph.GetNode(XmlNames.Edges); //Nodes foreach (XmlElement curItem in nodes) { INode newNode = (INode)SerializableHelper.Deserialize(curItem); if (newNode == null) { throw new Exception($"Error found during Deserialize. XML:{curItem}"); } myNodeList.Add(newNode.Guid, newNode); } //Edges foreach (XmlElement curItem in edges) { IEdge newEdge = (IEdge)SerializableHelper.Deserialize(curItem); if (newEdge == null) { throw new Exception($"Error found during Deserialize. XML:{curItem}"); } //Add Link AddEdge(newEdge.FromGuid, newEdge.ToGuid, newEdge); } }
private void GraphInit() { XmlElement graph = myIohandler.ReadFile(); var nodes = graph.GetNode(XmlNames.Nodes); var edges = graph.GetNode(XmlNames.Edges); //Nodes foreach (XmlElement curItem in nodes) { Node newNode = (Node)SerializableHelper.Deserialize(curItem, myConfiguration); if (newNode == null) { throw new SerializationException($"Error found during Deserialize. XML:{curItem}"); } myNodeList.Add(newNode.Guid, newNode); } //Edges foreach (XmlElement curItem in edges) { Edge newEdge = (Edge)SerializableHelper.Deserialize(curItem, myConfiguration); if (newEdge == null) { throw new SerializationException($"Error found during Deserialize. XML:{curItem}"); } //Add Link AddEdgeByGuid(newEdge.FromGuid, newEdge.ToGuid, newEdge); } }
/// <summary>Read a "Version2" STU asset</summary> private void DeserializeV2(BinaryReader reader) { reader.BaseStream.Position = StartPos; HeaderChecksum = CRC.CRC64(reader.ReadBytes(36), 36, 0xFFFFFFFFFFFFFFFF); reader.BaseStream.Position = StartPos; SerializableHelper.Deserialize(reader, out InstanceInfo); SerializableHelper.Deserialize(reader, out InlinedTypesInfo); SerializableHelper.Deserialize(reader, out FieldInfoBags); int dynDataSize = reader.ReadInt32(); int dynDataOff = reader.ReadInt32(); int dataBufferOffset = reader.ReadInt32(); if (dynDataSize > 0) { reader.BaseStream.Position = dynDataOff + StartPos; DynData = new BinaryReader(new MemoryStream(reader.ReadBytes(dynDataSize))); } if (dataBufferOffset < reader.BaseStream.Length) { long dataSize = reader.BaseStream.Length - dataBufferOffset; if (dataSize > int.MaxValue) { throw new Exception("oops"); } reader.BaseStream.Position = dataBufferOffset + StartPos; Data = new BinaryReader(new MemoryStream(reader.ReadBytes((int)dataSize))); } if (InstanceInfo.Count > 0) { Instances = new STUInstance[InstanceInfo.Count]; for (int i = 0; i < InstanceInfo.Count; i++) { Instances[i] = Manager.CreateInstance(InstanceInfo[i].Hash); } } for (int i = 0; i != InstanceInfo.Count; ++i) { STUInstance_Info info = InstanceInfo[i]; STUInstance instance = Instances[i]; long startPosition = Data.Position(); if (instance != null) { instance.Deserialize(this); long endPosition = Data.Position(); } Data.BaseStream.Position = startPosition + info.Size; //if (endPosition - startPosition != info.Size) // throw new Exceptions.InvalidTypeSize($"read len != type size. Type: '{instance.GetName()}', Data offset: {startPosition}"); } }
public void Deserialize(BinaryReader reader) { int size = reader.ReadInt32(); int offset = reader.ReadInt32(); long oldPosition = reader.BaseStream.Position; reader.BaseStream.Position = offset; Capacity = size; for (int i = 0; i != size; ++i) { SerializableHelper.Deserialize(reader, out T val); Add(val); } reader.BaseStream.Position = oldPosition; }