Beispiel #1
0
        internal SerializationService(IInputOutputFactory inputOutputFactory, int version,
                                      IDictionary <int, IDataSerializableFactory> dataSerializableFactories,
                                      IDictionary <int, IPortableFactory> portableFactories, ICollection <IClassDefinition> classDefinitions,
                                      SerializerHooks hooks,
                                      IEnumerable <ISerializerDefinitions> definitions,
                                      bool checkClassDefErrors, IPartitioningStrategy partitioningStrategy, int initialOutputBufferSize,
                                      ILoggerFactory loggerFactory)
        {
            _logger                    = loggerFactory.CreateLogger <SerializationService>();
            _inputOutputFactory        = inputOutputFactory;
            GlobalPartitioningStrategy = partitioningStrategy;
            _outputBufferSize          = initialOutputBufferSize;
            _bufferPoolThreadLocal     = new BufferPoolThreadLocal(this);
            _portableContext           = new PortableContext(this, version);

            // create data serializer (will be added as constant)
            var dataSerializer = new DataSerializer(hooks, dataSerializableFactories, loggerFactory);

            _dataSerializerAdapter = CreateSerializerAdapter <IIdentifiedDataSerializable>(dataSerializer);

            // create portable serializer (will be added as constant)
            _portableSerializer        = new PortableSerializer(_portableContext, portableFactories);
            _portableSerializerAdapter = CreateSerializerAdapter <IPortable>(_portableSerializer);

            // create the serializer of null objects (will be added as constant)
            _nullSerializerAdapter = CreateSerializerAdapter <object>(new NullSerializer());

            // create the serializable adapter (will be added as constant)
            _serializableSerializerAdapter = CreateSerializerAdapter <object>(new SerializableSerializer());

            // add defined serializers
            foreach (var definition in definitions)
            {
                definition.AddSerializers(this);
            }

            // add constant serializers
            AddMoreSerializers();

            // add class definitions
            RegisterClassDefinitions(classDefinitions, checkClassDefErrors);
        }
Beispiel #2
0
 internal PortableSerializer(PortableContext context,
                             IEnumerable <KeyValuePair <int, IPortableFactory> > portableFactories)
 {
     _context   = context;
     _factories = _factories.Union(portableFactories).ToDictionary(x => x.Key, x => x.Value);
 }
 internal ClassDefinitionContext(PortableContext portableContext, int factoryId)
 {
     _portableContext = portableContext;
     _factoryId       = factoryId;
 }