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);
        }
Exemplo n.º 2
0
		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);
		}