ActorChat.Services.RoomActorService.RoomActorService.RoomActorService C# (CSharp) Метод

RoomActorService() публичный Метод

public RoomActorService ( StatefulServiceContext context ) : System
context StatefulServiceContext
Результат System
        public RoomActorService(StatefulServiceContext context)
            : base(context)
        {
            float timeoutDebugMultiplier = 10;
            var builder = new ContainerBuilder();

            builder.Register(c => new ProtobufMessageSerializer(typeof(Message).Assembly, typeof(JoinRoom).Assembly, typeof(JoinRoomS2S).Assembly)).As<IMessageSerializer>();

            var logger = new LoggerConfiguration()
                .ConfigureMOUSETypesDestructure()
                .MinimumLevel.Verbose()
                .Enrich.With(new AzureServiceFabricSerilogEnricher(Context))
                .Enrich.With<ExceptionEnricher>()
                .WriteTo.Trace()
                .CreateLogger();

            builder.RegisterInstance(logger).As<ILogger>();

            builder.RegisterType<SerilogCoreEvents>().As<ICoreEvents>();
            builder.RegisterType<SerilogActorCoreEvents>().As<IActorCoreEvents>();
            builder.RegisterType<SerilogLidgrenEvents>().As<ILidgrenEvents>();

            var roomActorsEndpoint = FabricRuntime.GetActivationContext().GetEndpoint("RoomActors");

            var nodeIP = Dns.GetHostAddresses(FabricRuntime.GetNodeContext().IPAddressOrFQDN).First(x => x.AddressFamily == AddressFamily.InterNetwork);

            var roomActorsNetConfig = new NetPeerConfiguration("RoomActors")
            {
                LocalAddress = nodeIP,
                MaximumConnections = 10000,
                AcceptIncomingConnections = true,
                Port = roomActorsEndpoint.Port,
                ConnectionTimeout = 10 * timeoutDebugMultiplier
            };

            var callbacksNetConfig = new NetPeerConfiguration("Callbacks")
            {
                AcceptIncomingConnections = false,
                ConnectionTimeout = 10 * timeoutDebugMultiplier
            };


            builder.RegisterType<WcfBufferPool>().As<IBufferPool>();

           
            builder.Register(c =>
                new CallbacksGatewayNode("Callbacks",
                    new LidgrenNetProvider(callbacksNetConfig, c.Resolve<ILidgrenEvents>()),
                    c.Resolve<ICoreEvents>(), c.Resolve<IMessageSerializer>(), c.Resolve<INetNodeConfig>(), c.Resolve<IBufferPool>()))
                .As<ICallbacksGatewayNode>()
                .As<INetNode>()
                .SingleInstance();

            builder.Register(c => new NetNodeConfig()
            {
                SendTimeoutSec = (int)(10.0 * timeoutDebugMultiplier),
                ConnectTimeoutSec = (int)(10 * timeoutDebugMultiplier)
            }).As<INetNodeConfig>();

            builder.Register(c => new RoomActor(c.Resolve<ICallbacksGatewayNode>(), StateManager)).As<IRoomActor>();
            builder.Register(c =>
                    new ServiceFabricActorSystemNetNode<IRoomActor>("RoomActors", new Uri("fabric:/ActorChat.ServiceFabric/RoomActorService"),
                        new LidgrenNetProvider(roomActorsNetConfig, c.Resolve<ILidgrenEvents>()),
                        c.Resolve<IActorCoreEvents>(), c.Resolve<ICoreEvents>(), c.Resolve<IMessageSerializer>(), c.Resolve<INetNodeConfig>(), c.Resolve<IBufferPool>(),
                        actorFactory: c.Resolve<Func<IRoomActor>>()))
               .As<INetNode>()
               .Named<INetNode>("RoomActors")
               .As<IActorSystem<IRoomActor>>()
               .SingleInstance();

            var container = builder.Build();


            _netNodes = container.Resolve<IEnumerable<INetNode>>();
        }