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); }
public virtual Db4objects.Db4o.Internal.VirtualAttributes VirtualAttributes(Db4objects.Db4o.Internal.Transaction trans, bool lastCommitted) { if (trans == null) { return(_virtualAttributes); } lock (trans.Container().Lock()) { if (_virtualAttributes == null) { if (_class.HasVirtualAttributes()) { _virtualAttributes = new Db4objects.Db4o.Internal.VirtualAttributes(); _class.ReadVirtualAttributes(trans, this, lastCommitted); } } else { if (!_virtualAttributes.SuppliesUUID()) { if (_class.HasVirtualAttributes()) { _class.ReadVirtualAttributes(trans, this, lastCommitted); } } } return(_virtualAttributes); } }
// FIXME: should be named "uuidLongPart" or even better "creationTime" public virtual object ShallowClone() { var va = new VirtualAttributes(); va.i_database = i_database; va.i_version = i_version; va.i_uuid = i_uuid; return va; }
public virtual Db4objects.Db4o.Internal.VirtualAttributes ProduceVirtualAttributes () { if (_virtualAttributes == null) { _virtualAttributes = new Db4objects.Db4o.Internal.VirtualAttributes(); } return(_virtualAttributes); }
public virtual VirtualAttributes ProduceVirtualAttributes () { if (_virtualAttributes == null) { _virtualAttributes = new VirtualAttributes(); } return(_virtualAttributes); }
// FIXME: should be named "uuidLongPart" or even better "creationTime" public virtual object ShallowClone() { VirtualAttributes va = new VirtualAttributes(); va.i_database = i_database; va.i_version = i_version; va.i_uuid = i_uuid; return(va); }
public virtual Db4oUUID GetUUID() { Db4objects.Db4o.Internal.VirtualAttributes va = VirtualAttributes(Transaction()); if (va != null && va.i_database != null) { return(new Db4oUUID(va.i_uuid, va.i_database.i_signature)); } return(null); }
internal override void Marshall(Transaction trans, ObjectReference @ref, IWriteBuffer buffer, bool isMigrating, bool isNew) { VirtualAttributes attr = @ref.VirtualAttributes(); ObjectContainerBase container = trans.Container(); bool doAddIndexEntry = isNew && container.MaintainsIndices(); int dbID = 0; bool linkToDatabase = (attr != null && attr.i_database == null) ? true : !isMigrating; if (linkToDatabase) { Db4oDatabase db = ((IInternalObjectContainer)container).Identity(); if (db == null) { // can happen on early classes like Metaxxx, no problem attr = null; } else { if (attr.i_database == null) { attr.i_database = db; // TODO: Should be check for ! client instead of instanceof if (container is LocalObjectContainer) { attr.i_uuid = container.GenerateTimeStampId(); doAddIndexEntry = true; } } db = attr.i_database; if (db != null) { dbID = db.GetID(trans); } } } else { if (attr != null) { dbID = attr.i_database.GetID(trans); } } buffer.WriteInt(dbID); if (attr == null) { buffer.WriteLong(0); return; } buffer.WriteLong(attr.i_uuid); if (doAddIndexEntry) { AddIndexEntry(trans, @ref.GetID(), attr.i_uuid); } }
public Db4oReplicationReferenceImpl(object myObject, Db4oDatabase db, long longPart , long version) { SetObject(myObject); Ref_init(); Db4objects.Db4o.Internal.VirtualAttributes va = new Db4objects.Db4o.Internal.VirtualAttributes (); va.i_database = db; va.i_uuid = longPart; va.i_version = version; SetVirtualAttributes(va); }
public Db4oReplicationReferenceImpl(object obj, Db4oDatabase db, long longPart, long version) { if (obj == null) { throw new InvalidOperationException("obj may not be null"); } SetObject(obj); Ref_init(); Db4objects.Db4o.Internal.VirtualAttributes va = new Db4objects.Db4o.Internal.VirtualAttributes (); va.i_database = db; va.i_uuid = longPart; va.i_version = version; _version = version; SetVirtualAttributes(va); }
internal override void Marshall(Transaction trans, ObjectReference @ref, IWriteBuffer buffer, bool isMigrating, bool isNew) { VirtualAttributes attr = @ref.VirtualAttributes(); if (!isMigrating) { attr.i_version = trans.Container().GenerateTimeStampId(); } if (attr == null) { buffer.WriteLong(0); } else { buffer.WriteLong(attr.i_version); } }
protected HardObjectReference GetHardObjectReferenceById(Transaction transaction, int parentId, byte[] signature) { HardObjectReference hardRef = transaction.Container().GetHardObjectReferenceById( transaction, parentId); if (hardRef._reference == null) { return(null); } VirtualAttributes vad = hardRef._reference.VirtualAttributes(transaction, false); if (!Arrays4.Equals(signature, vad.i_database.i_signature)) { return(null); } return(hardRef); }
internal Db4oReplicationReferenceImpl(IObjectInfo objectInfo) { ObjectReference yo = (ObjectReference)objectInfo; Transaction trans = yo.Transaction(); Db4objects.Db4o.Internal.VirtualAttributes va = yo.VirtualAttributes(trans); if (va != null) { SetVirtualAttributes((Db4objects.Db4o.Internal.VirtualAttributes)va.ShallowClone( )); } else { // No virtu SetVirtualAttributes(new Db4objects.Db4o.Internal.VirtualAttributes()); } object obj = yo.GetObject(); SetObject(obj); Ref_init(); }
internal override void Instantiate1(ObjectReferenceContext context) { int dbID = context.ReadInt(); Transaction trans = context.Transaction(); ObjectContainerBase container = trans.Container(); container.ShowInternalClasses(true); try { Db4oDatabase db = (Db4oDatabase)container.GetByID2(trans, dbID); if (db != null && db.i_signature == null) { container.Activate(trans, db, new FixedActivationDepth(2)); } VirtualAttributes va = context.ObjectReference().VirtualAttributes(); va.i_database = db; va.i_uuid = context.ReadLong(); } finally { container.ShowInternalClasses(false); } }
internal Db4oReplicationReferenceImpl(IObjectInfo objectInfo, object obj) { if (obj == null) { throw new InvalidOperationException("obj may not be null"); } _version = objectInfo.GetCommitTimestamp(); ObjectReference @ref = (ObjectReference)objectInfo; Transaction trans = @ref.Transaction(); Db4objects.Db4o.Internal.VirtualAttributes va = @ref.VirtualAttributes(trans); if (va != null) { SetVirtualAttributes((Db4objects.Db4o.Internal.VirtualAttributes)va.ShallowClone( )); } else { SetVirtualAttributes(new Db4objects.Db4o.Internal.VirtualAttributes()); } SetObject(obj); Ref_init(); }
public virtual void SetVirtualAttributes(Db4objects.Db4o.Internal.VirtualAttributes at) { _virtualAttributes = at; }
public virtual void SetVirtualAttributes(VirtualAttributes at) { _virtualAttributes = at; }
public virtual Db4objects.Db4o.Internal.VirtualAttributes ProduceVirtualAttributes () { if (_virtualAttributes == null) { _virtualAttributes = new Db4objects.Db4o.Internal.VirtualAttributes(); } return _virtualAttributes; }
public virtual Db4objects.Db4o.Internal.VirtualAttributes VirtualAttributes(Db4objects.Db4o.Internal.Transaction trans, bool lastCommitted) { if (trans == null) { return _virtualAttributes; } lock (trans.Container().Lock()) { if (_virtualAttributes == null) { if (_class.HasVirtualAttributes()) { _virtualAttributes = new Db4objects.Db4o.Internal.VirtualAttributes(); _class.ReadVirtualAttributes(trans, this, lastCommitted); } } else { if (!_virtualAttributes.SuppliesUUID()) { if (_class.HasVirtualAttributes()) { _class.ReadVirtualAttributes(trans, this, lastCommitted); } } } return _virtualAttributes; } }
public virtual VirtualAttributes ProduceVirtualAttributes () { if (_virtualAttributes == null) { _virtualAttributes = new VirtualAttributes(); } return _virtualAttributes; }