示例#1
0
 public MessageSerializer(
     Serializer <object> bodySerializer,
     SerializerSessionPool sessionPool,
     SharedMemoryPool memoryPool,
     IServiceProvider services,
     Serializer <GrainAddress> activationAddressSerializer,
     ICodecProvider codecProvider,
     int maxHeaderSize,
     int maxBodySize)
 {
     _readerSiloAddressCodec = new CachingSiloAddressCodec();
     _writerSiloAddressCodec = new CachingSiloAddressCodec();
     _readerIdSpanCodec      = new CachingIdSpanCodec();
     _writerIdSpanCodec      = new CachingIdSpanCodec();
     _serializer             = ActivatorUtilities.CreateInstance <Serializer>(services);
     _activationAddressCodec = activationAddressSerializer;
     _serializationSession   = sessionPool.GetSession();
     _deserializationSession = sessionPool.GetSession();
     _memoryPool             = memoryPool.Pool;
     _bodySerializer         = bodySerializer;
     _maxHeaderLength        = maxHeaderSize;
     _maxBodyLength          = maxBodySize;
     _sessionPool            = sessionPool;
     _requestContextCodec    = OrleansGeneratedCodeHelper.GetService <DictionaryCodec <string, object> >(this, codecProvider);
 }
示例#2
0
 public GeneratedSerializerTests()
 {
     _serviceProvider = new ServiceCollection()
                        .AddHagar(hagar => hagar.AddAssembly(typeof(GeneratedSerializerTests).Assembly))
                        .BuildServiceProvider();
     _codecProvider = _serviceProvider.GetRequiredService <ITypedCodecProvider>();
     _sessionPool   = _serviceProvider.GetRequiredService <SerializerSessionPool>();
 }
示例#3
0
 public GeneratedSerializerTests()
 {
     _serviceProvider = new ServiceCollection()
                        .AddSerializer()
                        .BuildServiceProvider();
     _codecProvider = _serviceProvider.GetRequiredService <IFieldCodecProvider>();
     _sessionPool   = _serviceProvider.GetRequiredService <SerializerSessionPool>();
 }
示例#4
0
        public ComplexTypeBenchmarks()
        {
            _orleansSerializer = new ClientBuilder()
                                 .ConfigureDefaults()
                                 .UseLocalhostClustering()
                                 .ConfigureServices(s => s.ToList().ForEach(r =>
            {
                if (r.ServiceType == typeof(IConfigurationValidator))
                {
                    _ = s.Remove(r);
                }
            }))
                                 .Configure <ClusterOptions>(o => o.ClusterId = o.ServiceId = "test")
                                 .ConfigureApplicationParts(parts => parts.AddApplicationPart(typeof(SimpleClass).Assembly).WithCodeGeneration())
                                 .Build().ServiceProvider.GetRequiredService <SerializationManager>();
            var services = new ServiceCollection();

            _ = services
                .AddHagar(hagar => hagar.AddISerializableSupport().AddAssembly(typeof(Program).Assembly));
            var serviceProvider = services.BuildServiceProvider();

            _hagarSerializer  = serviceProvider.GetRequiredService <Serializer <ComplexClass> >();
            _structSerializer = serviceProvider.GetRequiredService <Serializer <SimpleStruct> >();
            _sessionPool      = serviceProvider.GetRequiredService <SerializerSessionPool>();
            _value            = new ComplexClass
            {
                BaseInt = 192,
                Int     = 501,
                String  = "bananas",
                //Array = Enumerable.Range(0, 60).ToArray(),
                //MultiDimensionalArray = new[,] {{0, 2, 4}, {1, 5, 6}}
            };
            _value.AlsoSelf = _value.BaseSelf = _value.Self = _value;

            _structValue = new SimpleStruct
            {
                Int  = 42,
                Bool = true,
                Guid = Guid.NewGuid()
            };
            _session = _sessionPool.GetSession();
            var writer = HagarBuffer.CreateWriter(_session);

            _hagarSerializer.Serialize(_value, ref writer);
            var bytes = new byte[writer.Output.GetMemory().Length];

            writer.Output.GetReadOnlySequence().CopyTo(bytes);
            _hagarBytes = new ReadOnlySequence <byte>(bytes);
            HagarBuffer.Reset();

            var writer2 = new BinaryTokenStreamWriter();

            _orleansSerializer.Serialize(_value, writer2);
            _orleansBytes = writer2.ToBytes();

            _readBytesLength = Math.Min(bytes.Length, _orleansBytes.Sum(x => x.Count));
        }
示例#5
0
        public ISerializableTests(ITestOutputHelper log)
        {
            var services = new ServiceCollection();

            _ = services.AddHagar(hagar => hagar.AddISerializableSupport());

            _serviceProvider = services.BuildServiceProvider();
            _sessionPool     = _serviceProvider.GetService <SerializerSessionPool>();
            _serializer      = _serviceProvider.GetRequiredService <Serializer <object> >();
            _log             = log;
        }
示例#6
0
        public ISerializableTests(ITestOutputHelper log)
        {
            var services = new ServiceCollection();

            _ = services.AddSerializer();
            services.RemoveAll(typeof(TypeResolver));
            services.AddSingleton <TypeResolver>(sp => new BanningTypeResolver(typeof(UnserializableConformingException), typeof(UnserializableNonConformingException)));
            services.AddSingleton <IGeneralizedCodec, DotNetSerializableCodec>();

            _serviceProvider = services.BuildServiceProvider();
            _sessionPool     = _serviceProvider.GetService <SerializerSessionPool>();
            _serializer      = _serviceProvider.GetRequiredService <Serializer <object> >();
            _log             = log;
        }
示例#7
0
        protected FieldCodecTester()
        {
            var services = new ServiceCollection();

            _ = services.AddSerializer(builder => builder.Configure(config => config.FieldCodecs.Add(typeof(TCodec))));

            if (!typeof(TCodec).IsAbstract && !typeof(TCodec).IsInterface)
            {
                _ = services.AddSingleton <TCodec>();
            }

            _ = services.AddSerializer(Configure);

            _serviceProvider = services.BuildServiceProvider();
            _sessionPool     = _serviceProvider.GetService <SerializerSessionPool>();
        }
示例#8
0
        public ConnectionHandler(ConnectionContext connection, ChannelWriter <Message> received, SerializerSessionPool sessionPool, Serializer <Message> messageSerializer)
        {
            _connection = connection;
            var outgoing = Channel.CreateUnbounded <Message>(
                new UnboundedChannelOptions
            {
                SingleReader = true,
                SingleWriter = false,
            });

            _outgoingWriter        = outgoing.Writer;
            _outgoingReader        = outgoing.Reader;
            _incoming              = received;
            _serializerSessionPool = sessionPool;
            _messageSerializer     = messageSerializer;
        }
示例#9
0
        protected FieldCodecTester()
        {
            var services = new ServiceCollection();

            _ = services.AddHagar(hagar => hagar.Configure(config => config.FieldCodecs.Add(typeof(TCodec))));

            if (!typeof(TCodec).IsAbstract && !typeof(TCodec).IsInterface)
            {
                _ = services.AddSingleton <TCodec>();
            }

            // ReSharper disable once VirtualMemberCallInConstructor
            _ = services.AddHagar(Configure);

            _serviceProvider = services.BuildServiceProvider();
            _sessionPool     = _serviceProvider.GetService <SerializerSessionPool>();
        }
示例#10
0
        public ISerializableTests(ITestOutputHelper log)
        {
            var services = new ServiceCollection();

            _ = services.AddSerializer(builder =>
            {
                builder.Configure(options =>
                {
                    options.AllowedTypes.Add("Orleans.Serialization.UnitTests.ISerializableTests");
                    options.AllowedTypes.Add("Orleans.Serialization.UnitTests.ISerializableTests+SimpleISerializableObject");
                    options.AllowedTypes.Add("Orleans.Serialization.UnitTests.ISerializableTests+SimpleISerializableStruct");
                });
            });
            services.RemoveAll(typeof(TypeResolver));
            services.AddSingleton <TypeResolver>(sp => new BanningTypeResolver(typeof(UnserializableConformingException), typeof(UnserializableNonConformingException)));
            services.AddSingleton <IGeneralizedCodec, DotNetSerializableCodec>();

            _serviceProvider = services.BuildServiceProvider();
            _sessionPool     = _serviceProvider.GetService <SerializerSessionPool>();
            _serializer      = _serviceProvider.GetRequiredService <Serializer <object> >();
            _log             = log;
        }
示例#11
0
 protected BufferTester(IServiceProvider serviceProvider)
 {
     _sessionPool = serviceProvider.GetRequiredService <SerializerSessionPool>();
     _serializer  = serviceProvider.GetRequiredService <Serializer <TValue> >();
 }