private FrozenObjectInfo(ObjectReference @ref, VirtualAttributes virtualAttributes ) : this(@ref == null ? null : @ref.GetObject(), @ref == null ? -1 : @ref.GetID( ), virtualAttributes == null ? null : virtualAttributes.i_database, virtualAttributes == null ? -1 : virtualAttributes.i_uuid, virtualAttributes == null ? 0 : virtualAttributes .i_version) { }
private void Marshall(Transaction trans, ObjectReference @ref, IWriteBuffer buffer , bool isNew) { if (!trans.SupportsVirtualFields()) { MarshallIgnore(buffer); return; } ObjectContainerBase stream = trans.Container(); HandlerRegistry handlers = stream._handlers; bool migrating = false; if (stream._replicationCallState == Const4.New) { IDb4oReplicationReferenceProvider provider = handlers._replicationReferenceProvider; object parentObject = @ref.GetObject(); IDb4oReplicationReference replicationReference = provider.ReferenceFor(parentObject ); if (replicationReference != null) { migrating = true; VirtualAttributes va = @ref.ProduceVirtualAttributes(); va.i_version = replicationReference.Version(); va.i_uuid = replicationReference.LongPart(); va.i_database = replicationReference.SignaturePart(); } } if (@ref.VirtualAttributes() == null) { @ref.ProduceVirtualAttributes(); migrating = false; } Marshall(trans, @ref, buffer, migrating, isNew); }
private FrozenObjectInfo(ObjectReference @ref, VirtualAttributes virtualAttributes ) : this(@ref == null ? null : @ref.GetObject(), @ref == null ? -1 : @ref.GetID( ), virtualAttributes == null ? null : virtualAttributes.i_database, virtualAttributes == null ? -1 : virtualAttributes.i_uuid, virtualAttributes == null ? 0 : virtualAttributes .i_version) { }
/// <summary>HCTREE</summary> public virtual Db4objects.Db4o.Internal.ObjectReference Hc_add(Db4objects.Db4o.Internal.ObjectReference newRef) { if (newRef.GetObject() == null) { return(this); } newRef.Hc_init(); return(Hc_add1(newRef)); }
/// <summary>HCTREE</summary> public virtual ObjectReference Hc_add(ObjectReference newRef) { if (newRef.GetObject() == null) { return(this); } newRef.Hc_init(); return(Hc_add1(newRef)); }
public object ObjectForIdFromCache(int id) { ObjectReference @ref = ReferenceForId(id); if (@ref == null) { return(null); } object candidate = @ref.GetObject(); if (candidate == null) { RemoveReference(@ref); } return(candidate); }
public virtual IObjectInfo FrozenReferenceFor(int id) { ObjectReference @ref = ReferenceForId(id); if (@ref != null) { return(new FrozenObjectInfo(this, @ref, true)); } @ref = Container().PeekReference(SystemTransaction(), id, new FixedActivationDepth (0), true); if (@ref == null || @ref.GetObject() == null) { return(null); } return(new FrozenObjectInfo(SystemTransaction(), @ref, true)); }
public ObjectReference ReferenceForId(int id) { ObjectReference @ref = ReferenceSystem().ReferenceForId(id); if (@ref != null) { if (@ref.GetObject() == null) { RemoveReference(@ref); return(null); } return(@ref); } if (ParentTransaction() != null) { return(ParentTransaction().ReferenceForId(id)); } return(null); }
private void Marshall(Transaction trans, ObjectReference @ref, IWriteBuffer buffer , bool isNew) { if (!trans.SupportsVirtualFields()) { MarshallIgnore(buffer); return; } ObjectContainerBase stream = trans.Container(); HandlerRegistry handlers = stream._handlers; bool migrating = false; if (stream._replicationCallState == Const4.New) { IDb4oReplicationReferenceProvider provider = handlers._replicationReferenceProvider; object parentObject = @ref.GetObject(); IDb4oReplicationReference replicationReference = provider.ReferenceFor(parentObject ); if (replicationReference != null) { migrating = true; VirtualAttributes va = @ref.ProduceVirtualAttributes(); va.i_version = replicationReference.Version(); va.i_uuid = replicationReference.LongPart(); va.i_database = replicationReference.SignaturePart(); } } if (@ref.VirtualAttributes() == null) { @ref.ProduceVirtualAttributes(); migrating = false; } Marshall(trans, @ref, buffer, migrating, isNew); }
public HardObjectReference GetHardObjectReferenceById(Transaction trans, int id) { if (id <= 0) { return HardObjectReference.Invalid; } ObjectReference @ref = trans.ReferenceForId(id); if (@ref != null) { // Take care about handling the returned candidate reference. // If you loose the reference, weak reference management might also. object candidate = @ref.GetObject(); if (candidate != null) { return new HardObjectReference(@ref, candidate); } trans.RemoveReference(@ref); } @ref = new ObjectReference(id); object readObject = @ref.Read(trans, new LegacyActivationDepth(0), Const4.AddToIdTree , true); if (readObject == null) { return HardObjectReference.Invalid; } // check class creation side effect and simply retry recursively // if it hits: if (readObject != @ref.GetObject()) { return GetHardObjectReferenceById(trans, id); } return new HardObjectReference(@ref, readObject); }
public override bool CanSkip(ObjectReference @ref) { ClassMetadata clazz = @ref.ClassMetadata(); return clazz.Reflector().ForClass(typeof(IActivatable)).IsAssignableFrom(clazz.ClassReflector ()) && !_query.IsModified(@ref.GetObject()); }
private static bool IsInstantiatedReference(ObjectReference @ref) { return @ref != null && @ref.GetObject() != null; }
private void Unbind(ObjectReference objectReference) { object obj = objectReference.GetObject(); if (obj == null || !(obj is IActivatable)) { return; } Bind(obj, null); }
private static bool IsInstantiatedReference(ObjectReference @ref) { return(@ref != null && @ref.GetObject() != null); }
/// <summary>HCTREE</summary> public virtual ObjectReference Hc_add(ObjectReference newRef) { if (newRef.GetObject() == null) { return this; } newRef.Hc_init(); return Hc_add1(newRef); }