Beispiel #1
0
 public GroBufWriter(long serializerId, IDataMembersExtractor dataMembersExtractor, IGroBufCustomSerializerCollection customSerializerCollection, GroBufOptions options, Func <Type, IGroBufCustomSerializer> factory, Func <Type, IGroBufCustomSerializer> baseFactory)
 {
     this.serializerId         = serializerId;
     this.dataMembersExtractor = dataMembersExtractor;
     this.Options          = options;
     sizeCounterCollection = new SizeCounterCollection(customSerializerCollection, factory, baseFactory);
     writerCollection      = new WriterCollection(customSerializerCollection, factory, baseFactory);
     assembly        = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName(Guid.NewGuid().ToString()), AssemblyBuilderAccess.Run);
     module          = assembly.DefineDynamicModule(Guid.NewGuid().ToString());
     trackReferences = options.HasFlag(GroBufOptions.PackReferences);
 }
Beispiel #2
0
        public GroBufReader(long serializerId, IDataMembersExtractor dataMembersExtractor, IGroBufCustomSerializerCollection customSerializerCollection, GroBufOptions options, Func <Type, IGroBufCustomSerializer> factory, Func <Type, IGroBufCustomSerializer> baseFactory)
        {
            this.serializerId               = serializerId;
            this.dataMembersExtractor       = dataMembersExtractor;
            this.customSerializerCollection = customSerializerCollection;
            this.options     = options;
            this.factory     = factory;
            this.baseFactory = baseFactory;
            var assembly = AppDomain.CurrentDomain.DefineDynamicAssembly(new AssemblyName(Guid.NewGuid().ToString()), AssemblyBuilderAccess.Run);

            module           = assembly.DefineDynamicModule(Guid.NewGuid().ToString());
            readerCollection = new ReaderCollection(customSerializerCollection, factory, baseFactory, module);
        }
Beispiel #3
0
        public Serializer(IDataMembersExtractor dataMembersExtractor, IGroBufCustomSerializerCollection customSerializerCollection = null, GroBufOptions options = GroBufOptions.None)
        {
            customSerializerCollection = customSerializerCollection ?? new DefaultGroBufCustomSerializerCollection();
            Func <Type, IGroBufCustomSerializer> factory     = type => new InternalSerializer(writer, reader, type, false);
            Func <Type, IGroBufCustomSerializer> baseFactory = type => new InternalSerializer(writer, reader, type, true);
            var id = Interlocked.Increment(ref serializerId) - 1;

            writer = new GroBufWriter(id, dataMembersExtractor, customSerializerCollection, options, factory, baseFactory);
            reader = new GroBufReader(id, dataMembersExtractor, customSerializerCollection, options, factory, baseFactory);
            if (options.HasFlag(GroBufOptions.WriteEmptyObjects))
            {
                writerWritingEmptyObjects = writer;
            }
            else
            {
                id = Interlocked.Increment(ref serializerId) - 1;
                writerWritingEmptyObjects = new GroBufWriter(id, dataMembersExtractor, customSerializerCollection, options | GroBufOptions.WriteEmptyObjects, factory, baseFactory);
            }
        }
Beispiel #4
0
 public WriterTypeBuilder(GroBufWriter groBufWriter, ModuleBuilder module, IWriterCollection writerCollection, IDataMembersExtractor dataMembersExtractor)
 {
     this.groBufWriter         = groBufWriter;
     this.module               = module;
     this.writerCollection     = writerCollection;
     this.dataMembersExtractor = dataMembersExtractor;
 }
Beispiel #5
0
 public WriterTypeBuilderContext(GroBufWriter groBufWriter, ModuleBuilder module, Type constantsType, Dictionary <Type, FieldInfo[]> fields, IWriterCollection writerCollection, IDataMembersExtractor dataMembersExtractor)
 {
     GroBufWriter              = groBufWriter;
     Module                    = module;
     ConstantsType             = constantsType;
     this.fields               = fields;
     this.writerCollection     = writerCollection;
     this.dataMembersExtractor = dataMembersExtractor;
 }
 public ReaderConstantsBuilderContext(GroBufReader groBufReader, TypeBuilder constantsBuilder, IReaderCollection readerCollection, IDataMembersExtractor dataMembersExtractor)
 {
     GroBufReader              = groBufReader;
     ConstantsBuilder          = constantsBuilder;
     this.readerCollection     = readerCollection;
     this.dataMembersExtractor = dataMembersExtractor;
 }
 public SizeCounterConstantsBuilderContext(GroBufWriter groBufWriter, TypeBuilder constantsBuilder, ISizeCounterCollection sizeCounterCollection, IDataMembersExtractor dataMembersExtractor)
 {
     GroBufWriter               = groBufWriter;
     ConstantsBuilder           = constantsBuilder;
     this.sizeCounterCollection = sizeCounterCollection;
     this.dataMembersExtractor  = dataMembersExtractor;
 }
Beispiel #8
0
 public ReaderTypeBuilderContext(GroBufReader groBufReader, ModuleBuilder module, Type constantsType, Dictionary <Type, FieldInfo[]> fields, IReaderCollection readerCollection, IDataMembersExtractor dataMembersExtractor)
 {
     GroBufReader              = groBufReader;
     Module                    = module;
     ConstantsType             = constantsType;
     this.fields               = fields;
     this.readerCollection     = readerCollection;
     this.dataMembersExtractor = dataMembersExtractor;
     Lengths                   = typeof(GroBufHelpers).GetField("Lengths", BindingFlags.Static | BindingFlags.Public);
 }
Beispiel #9
0
 public ReaderTypeBuilder(GroBufReader groBufReader, ModuleBuilder module, IReaderCollection readerCollection, IDataMembersExtractor dataMembersExtractor)
 {
     this.groBufReader         = groBufReader;
     this.module               = module;
     this.readerCollection     = readerCollection;
     this.dataMembersExtractor = dataMembersExtractor;
 }
 public SizeCounterTypeBuilder(GroBufWriter groBufWriter, ModuleBuilder module, ISizeCounterCollection sizeCounterCollection, IDataMembersExtractor dataMembersExtractor)
 {
     this.groBufWriter          = groBufWriter;
     this.module                = module;
     this.sizeCounterCollection = sizeCounterCollection;
     this.dataMembersExtractor  = dataMembersExtractor;
 }
 public WriterConstantsBuilderContext(GroBufWriter groBufWriter, TypeBuilder constantsBuilder, IWriterCollection writerCollection, IDataMembersExtractor dataMembersExtractor)
 {
     GroBufWriter              = groBufWriter;
     ConstantsBuilder          = constantsBuilder;
     this.writerCollection     = writerCollection;
     this.dataMembersExtractor = dataMembersExtractor;
 }