ln.types/odb/ODBObjectWriter.cs

44 lines
1.3 KiB
C#

// /**
// * File: ODB.cs
// * Author: haraldwolff
// *
// * This file and it's content is copyrighted by the Author and / or copyright holder.
// * Any use wihtout proper permission is illegal and may lead to legal actions.
// *
// *
// **/
using System;
using System.IO;
using System.Collections.Generic;
using ln.types.serialize;
using System.Linq;
namespace ln.types.odb
{
class ODBObjectWriter : ObjectWriter
{
public IPersistent[] ReferencedPersistents => referencedPersistents.Values.ToArray();
public Guid[] ReferencedPersistentIDs => referencedPersistents.Keys.ToArray();
private Dictionary<Guid, IPersistent> referencedPersistents = new Dictionary<Guid, IPersistent>();
public ODBObjectWriter(Stream stream)
: base(stream)
{}
public override object QueryReference(object o)
{
if (o is IPersistent)
{
IPersistent persistent = o as IPersistent;
Guid persistenceID = persistent.GetPersistenceID();
if (!referencedPersistents.ContainsKey(persistenceID))
referencedPersistents.Add(persistenceID, persistent);
return persistenceID;
}
return base.QueryReference(o);
}
}
}