/// <summary> /// Initializes a new instance of the <see cref="TcpCommunicationListener" /> class. /// </summary> /// <param name="server">RingMaster server</param> /// <param name="port">Port where this listener will listen</param> /// <param name="uriPublished">The specific uri to listen on</param> /// <param name="executor">RingMaster request executor</param> /// <param name="instrumentation">Instrumentation consumer</param> /// <param name="protocol">The Marshalling protocol</param> /// <param name="maximumSupportedProtocolVersion">Maximum supported version</param> public TcpCommunicationListener( RingMasterServer server, int port, string uriPublished, IRingMasterRequestExecutor executor, IRingMasterServerInstrumentation instrumentation, ICommunicationProtocol protocol, uint maximumSupportedProtocolVersion) { this.server = server; this.port = port; this.uriPublished = uriPublished; this.instrumentation = instrumentation; this.protocol = protocol; var transportConfig = new SecureTransport.Configuration { UseSecureConnection = false, IsClientCertificateRequired = false, CommunicationProtocolVersion = maximumSupportedProtocolVersion, }; this.transport = new SecureTransport(transportConfig); this.executor = executor; }
/// <summary> /// Initializes a new instance of the <see cref="RingMasterService"/> class. /// </summary> /// <param name="context">Service context</param> /// <param name="ringMasterMetricsFactory">Metrics factory for MDM</param> /// <param name="persistenceMetricsFactory">Metrics factory for persistence</param> public RingMasterService(StatefulServiceContext context, IMetricsFactory ringMasterMetricsFactory, IMetricsFactory persistenceMetricsFactory) : base(context, PersistedDataFactory.CreateStateManager(context)) { var path = System.Reflection.Assembly.GetExecutingAssembly().Location; var builder = new ConfigurationBuilder().SetBasePath(Path.GetDirectoryName(path)).AddJsonFile("appSettings.json"); appSettings = builder.Build(); RingMasterBackendCore.GetSettingFunction = GetSetting; string factoryName = $"{this.Context.ServiceTypeName}-{this.Context.ReplicaId}-{this.Context.NodeContext.NodeName}"; this.zooKeeperServerInstrumentation = new ZooKeeperServerInstrumentation(ringMasterMetricsFactory); this.ringMasterServerInstrumentation = new RingMasterServerInstrumentation(ringMasterMetricsFactory); var ringMasterInstrumentation = new RingMasterBackendInstrumentation(ringMasterMetricsFactory); var persistenceInstrumentation = new ServiceFabricPersistenceInstrumentation(persistenceMetricsFactory); RingMasterBackendCoreInstrumentation.Instance = ringMasterInstrumentation; bool needFixStatDuringLoad = bool.TryParse(GetSetting("WinFabPersistence.FixStatDuringLoad"), out needFixStatDuringLoad) && needFixStatDuringLoad; var persistenceConfiguration = new PersistedDataFactory.Configuration { EnableActiveSecondary = true, FixStatDuringLoad = needFixStatDuringLoad, }; bool useInMemoryPersistence; if (bool.TryParse(GetSetting("InMemoryPersistence"), out useInMemoryPersistence) && useInMemoryPersistence) { this.factory = new InMemoryFactory(); } else { this.factory = new PersistedDataFactory( this.StateManager, factoryName, persistenceConfiguration, persistenceInstrumentation, this.cancellationSource.Token); } this.backend = new RingMasterBackendCore(this.factory); this.factory.SetBackend(this.backend); this.executor = this.backend; }