示例#1
0
        internal SerializationService(IInputOutputFactory inputOutputFactory, int version,
                                      IDictionary <int, IDataSerializableFactory> dataSerializableFactories,
                                      IDictionary <int, IPortableFactory> portableFactories, ICollection <IClassDefinition> classDefinitions,
                                      bool checkClassDefErrors, IManagedContext managedContext,
                                      IPartitioningStrategy partitionStrategy, int initialOutputBufferSize, bool enableCompression,
                                      bool enableSharedObject)
        {
            _inputOutputFactory        = inputOutputFactory;
            _managedContext            = managedContext;
            GlobalPartitioningStrategy = partitionStrategy;
            _outputBufferSize          = initialOutputBufferSize;
            _bufferPoolThreadLocal     = new BufferPoolThreadLocal(this);
            _portableContext           = new PortableContext(this, version);
            _dataSerializerAdapter     =
                CreateSerializerAdapterByGeneric <IIdentifiedDataSerializable>(
                    new DataSerializer(dataSerializableFactories));
            _portableSerializer            = new PortableSerializer(_portableContext, portableFactories);
            _portableSerializerAdapter     = CreateSerializerAdapterByGeneric <IPortable>(_portableSerializer);
            _nullSerializerAdapter         = CreateSerializerAdapterByGeneric <object>(new ConstantSerializers.NullSerializer());
            _serializableSerializerAdapter =
                CreateSerializerAdapterByGeneric <object>(new DefaultSerializers.SerializableSerializer());

            RegisterConstantSerializers();
            RegisterDefaultSerializers();
            RegisterClassDefinitions(classDefinitions, checkClassDefErrors);
        }
        /// <exception cref="System.IO.IOException" />
        public DefaultPortableWriter(PortableSerializer serializer, IBufferObjectDataOutput @out, IClassDefinition cd)
        {
            _serializer    = serializer;
            _out           = @out;
            _cd            = cd;
            _writtenFields = new HashSet <string>(); //cd.GetFieldCount()
            _begin         = @out.Position();
            // room for final offset
            @out.WriteZeroBytes(4);
            @out.WriteInt(cd.GetFieldCount());
            _offset = @out.Position();
            // one additional for raw data
            var fieldIndexesLength = (cd.GetFieldCount() + 1) * Bits.IntSizeInBytes;

            @out.WriteZeroBytes(fieldIndexesLength);
        }
示例#3
0
 internal SerializationService(IInputOutputFactory inputOutputFactory, int version,
                               IDictionary <int, IDataSerializableFactory> dataSerializableFactories,
                               IDictionary <int, IPortableFactory> portableFactories, ICollection <IClassDefinition> classDefinitions,
                               bool checkClassDefErrors, IManagedContext managedContext,
                               IPartitioningStrategy partitionStrategy, int initialOutputBufferSize, bool enableCompression,
                               bool enableSharedObject)
 {
     this.inputOutputFactory    = inputOutputFactory;
     this.managedContext        = managedContext;
     globalPartitioningStrategy = partitionStrategy;
     outputBufferSize           = initialOutputBufferSize;
     dataOutputQueue            = new ThreadLocalOutputCache(this);
     portableContext            = new PortableContext(this, version);
     dataSerializerAdapter      =
         CreateSerializerAdapterByGeneric <IDataSerializable>(new DataSerializer(dataSerializableFactories));
     portableSerializer        = new PortableSerializer(portableContext, portableFactories);
     portableSerializerAdapter = CreateSerializerAdapterByGeneric <IPortable>(portableSerializer);
     RegisterConstantSerializers();
     RegisterDefaultSerializers();
     RegisterClassDefinitions(classDefinitions, checkClassDefErrors);
 }
示例#4
0
        public DefaultPortableReader(PortableSerializer serializer, IBufferObjectDataInput @in, IClassDefinition cd)
        {
            _in        = @in;
            Serializer = serializer;
            Cd         = cd;
            int fieldCount;

            try
            {
                // final position after portable is read
                _finalPosition = @in.ReadInt();
                // field count
                fieldCount = @in.ReadInt();
            }
            catch (IOException e)
            {
                throw new HazelcastSerializationException(e);
            }
            if (fieldCount != cd.GetFieldCount())
            {
                throw new InvalidOperationException("Field count[" + fieldCount + "] in stream does not match " + cd);
            }
            _offset = @in.Position();
        }
示例#5
0
 public MorphingPortableReader(PortableSerializer serializer, IBufferObjectDataInput input, IClassDefinition cd)
     : base(serializer, input, cd)
 {
 }