public virtual void DefragIndexEntry(DefragmentContextImpl context)
 {
     try
     {
         Read1(context.SourceBuffer());
         Read1(context.TargetBuffer());
     }
     catch (CorruptionException)
     {
         Exceptions4.VirtualException();
     }
 }
示例#2
0
 public static ObjectHeader Defrag(DefragmentContextImpl
     context)
 {
     var source = context.SourceBuffer();
     var target = context.TargetBuffer();
     var header = new ObjectHeader
         (context.Services().SystemTrans().Container(), null, source);
     var newID = context.Mapping().StrictMappedID(header.ClassMetadata().GetID());
     var slotFormat = header.SlotFormat();
     slotFormat.WriteObjectClassID(target, newID);
     slotFormat.SkipMarshallerInfo(target);
     slotFormat.ReadHeaderAttributes(target);
     return header;
 }
示例#3
0
        public static ObjectHeader Defrag(DefragmentContextImpl
                                          context)
        {
            var source = context.SourceBuffer();
            var target = context.TargetBuffer();
            var header = new ObjectHeader
                             (context.Services().SystemTrans().Container(), null, source);
            var newID      = context.Mapping().StrictMappedID(header.ClassMetadata().GetID());
            var slotFormat = header.SlotFormat();

            slotFormat.WriteObjectClassID(target, newID);
            slotFormat.SkipMarshallerInfo(target);
            slotFormat.ReadHeaderAttributes(target);
            return(header);
        }
示例#4
0
            private int CopyAcceptedClasses(DefragmentContextImpl context, int acceptedClasses
                                            )
            {
                int numClasses = context.ReadInt();

                for (int classIdx = 0; classIdx < numClasses; classIdx++)
                {
                    int classId = context.SourceBuffer().ReadInt();
                    if (!this.Accept(classId))
                    {
                        continue;
                    }
                    ++acceptedClasses;
                    context.WriteMappedID(classId);
                }
                return(acceptedClasses);
            }
示例#5
0
        public virtual void Defrag(ClassMetadata classMetadata, LatinStringIO sio, DefragmentContextImpl
                                   context, int classIndexID)
        {
            ReadName(sio, context.SourceBuffer());
            ReadName(sio, context.TargetBuffer());
            int metaClassID = 0;

            context.WriteInt(metaClassID);
            // ancestor ID
            context.CopyID();
            context.WriteInt((classMetadata.HasClassIndex() ? IndexIDForWriting(classIndexID)
                                 : 0));
            int aspectCount = context.ReadInt();

            if (aspectCount > classMetadata.DeclaredAspectCount())
            {
                throw new InvalidOperationException();
            }
            IntByRef processedAspectCount = new IntByRef(0);

            classMetadata.TraverseDeclaredAspects(new _IProcedure4_136(this, processedAspectCount
                                                                       , aspectCount, classMetadata, sio, context));
        }
示例#6
0
 public virtual void DefragIndexEntry(DefragmentContextImpl context)
 {
     try
     {
         Read1(context.SourceBuffer());
         Read1(context.TargetBuffer());
     }
     catch (CorruptionException)
     {
         Exceptions4.VirtualException();
     }
 }
示例#7
0
 public virtual void Defrag(ClassMetadata classMetadata, LatinStringIO sio, DefragmentContextImpl
     context, int classIndexID)
 {
     ReadName(sio, context.SourceBuffer());
     ReadName(sio, context.TargetBuffer());
     var metaClassID = 0;
     context.WriteInt(metaClassID);
     // ancestor ID
     context.CopyID();
     context.WriteInt((classMetadata.HasClassIndex()
         ? IndexIDForWriting(classIndexID)
         : 0));
     var aspectCount = context.ReadInt();
     if (aspectCount > classMetadata.DeclaredAspectCount())
     {
         throw new InvalidOperationException();
     }
     var processedAspectCount = new IntByRef(0);
     classMetadata.TraverseDeclaredAspects(new _IProcedure4_136(this, processedAspectCount
         , aspectCount, classMetadata, sio, context));
 }