public RemoteCacheClient(RemoteServiceSettings settings, HttpClient httpClient = null) { _settings = settings; _httpClient = httpClient ?? new HttpClient { BaseAddress = new Uri(settings.Uri) }; }
public static void AddPublisher(this IServiceCollection services, RemoteServiceSettings publisherSettings, IOptions <NotificationServiceSettings> options, LoggerFactory loggerFactory, DiagnosticSource diagnosticSource, HttpClient httpClient) { var settings = options.Value; _httpClient = httpClient; RegisterPublisher(services, publisherSettings, options, loggerFactory, diagnosticSource, settings); }
/// <summary> /// Creates <see cref="Packet"/> that contains provided <see cref="RemoteServiceSettings"/> data. /// </summary> /// <param name="settings"><see cref="RemoteServiceSettings"/> to create <see cref="Packet"/> from.</param> /// <returns><see cref="Packet"/> that contains provided <see cref="RemoteServiceSettings"/> data.</returns> public Packet ToPacket(RemoteServiceSettings settings) { Packet p = new Packet(Opcodes); settings.Write(ref p); return(p); }
public StandaloneTest() { var loggerFactory = new LoggerFactory(); loggerFactory.AddConsole(); var services = new ServiceCollection(); var config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appSettings.json").Build(); var settings = new NotificationServiceSettings(); config.GetSection("Notification").Bind(settings); _channelName = $"{settings.ApplicationName}.{settings.ServiceName}"; var options = Options.Create(settings); var diagnostic = new MyDiagnosticSource(); var remoteSettings = new RemoteServiceSettings { IsLocal = true }; services.AddPublisher(remoteSettings, options, loggerFactory, diagnostic); services.AddSubscriber(remoteSettings, options, loggerFactory, diagnostic); _serviceProvider = services.BuildServiceProvider(); _publisher = _serviceProvider.GetService <IPublisherClientService>(); _subscriber = _serviceProvider.GetService <SubscriberClientService>(); }
public PublisherClientServiceExtensionTestAppSettings() { var loggerFactory = new LoggerFactory(); loggerFactory.AddConsole(); var services = new ServiceCollection(); var config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appSettings.json").Build(); var settings = new NotificationServiceSettings(); config.GetSection("Notification").Bind(settings); var publisherSettings = new RemoteServiceSettings(); config.GetSection("Notification:Publisher").Bind(publisherSettings); _channelName = $"{settings.ApplicationName}.{settings.ServiceName}"; services.AddPublisher(publisherSettings, Options.Create(settings), loggerFactory, new MyDiagnosticSource()); _serviceProvider = services.BuildServiceProvider(); _publisher = _serviceProvider.GetService <LocalPublisherClientService>(); }
public SubscriberClientServiceExtensionTestAppSettings() { var loggerFactory = new LoggerFactory(); loggerFactory.AddConsole(); var config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appSettings.json").Build(); var services = new ServiceCollection(); var settings = new NotificationServiceSettings(); config.GetSection("Notification").Bind(settings); _settings = Options.Create(settings); var subscriberSettings = new RemoteServiceSettings(); config.GetSection("Notification:Subscriber").Bind(subscriberSettings); services.AddSubscriber(subscriberSettings, _settings, loggerFactory, new MyDiagnosticSource()); _serviceProvider = services.BuildServiceProvider(); _subscriber = _serviceProvider.GetService <SubscriberClientService>(); }
public RemotePublisherClientService(RemoteServiceSettings publisherSettings, HttpClient httpClient = null, string authenticationToken = "", string tokenType = "") { _publisherSettings = publisherSettings; _httpClient = httpClient; _authenticationToken = authenticationToken; _tokenType = tokenType; }
public PublisherClientServiceExtensionTest() { var loggerFactory = new LoggerFactory(); loggerFactory.AddConsole(); var services = new ServiceCollection(); var eventChannelRepository = new EventChannelRepository("ECommerce.Data.FileStore", new ConnectionOptions { Provider = "FileDb", ConnectionString = new FileInfo($"data\\channel_{Guid.NewGuid()}.json").FullName }, loggerFactory, new MyDiagnosticSource()); services.AddSingleton(eventChannelRepository); var eventSubscriptionRepository = new EventSubscriptionRepository(eventChannelRepository, "ECommerce.Data.FileStore", new ConnectionOptions { Provider = "FileDb", ConnectionString = new FileInfo($"data\\subscription_{Guid.NewGuid()}.json").FullName }, loggerFactory, new MyDiagnosticSource()); services.AddSingleton(eventSubscriptionRepository); var eventRepository = new EventRepository(eventChannelRepository, "ECommerce.Data.FileStore", new ConnectionOptions { Provider = "FileDb", ConnectionString = new FileInfo($"data\\event_{Guid.NewGuid()}.json").FullName }, loggerFactory, new MyDiagnosticSource()); services.AddSingleton(eventRepository); var settings = Options.Create(new NotificationServiceSettings { ApplicationName = "MyApplication", ServiceName = "MyService", MaxLifeTimeSubscriber = 30, MaxLifeTimeMessage = 30, IsFifo = true, CallBackType = "ECommerce.Events.Clients.Tests,ECommerce.Events.Clients.Tests.MyCallBackTest" }); var publisherSetting = new RemoteServiceSettings { IsLocal = true }; services.AddPublisher(publisherSetting, settings, loggerFactory, new MyDiagnosticSource()); _serviceProvider = services.BuildServiceProvider(); _publisher = _serviceProvider.GetRequiredService <LocalPublisherClientService>(); _channelName = $"{settings.Value.ApplicationName}.{settings.Value.ServiceName}"; }
private static void checkService(RemoteServiceSettings settings) { ManagementScope scope = null; if (settings.Path != null && settings.Path.Trim().Length > 0) { ConnectionOptions options = null; if (settings.Username != null && settings.Username.Trim().Length > 0) { options = new ConnectionOptions(); options.Username = settings.Username; options.Password = settings.Password; if (settings.Authority.Trim().Length > 0) { options.Authority = settings.Authority; } } scope = new ManagementScope(settings.Path, options); } else { scope = new ManagementScope(); } scope.Connect(); ObjectQuery query = new ObjectQuery(string.Format("SELECT * FROM Win32_Service WHERE Name = '{0}'", settings.ServiceName)); using (var searcher = new ManagementObjectSearcher(scope, query)) { bool found = false; foreach (ManagementObject queryObj in searcher.Get()) { found = true; if (settings.State.ToLower() != queryObj["State"].ToString().ToLower()) { throw new Exception(string.Format("Service {0} was not in expected state {1}; actual state: {2}", settings.ServiceName, settings.State, queryObj["State"])); } else { Logging.TraceEvent("Service {0} was in expected state {1}", settings.ServiceName, settings.State); } //Logging.TraceEvent(string.Format("Caption: {0}", queryObj["Caption"])); //Logging.TraceEvent(string.Format("Description: {0}", queryObj["Description"])); //Logging.TraceEvent(string.Format("Name: {0}", queryObj["Name"])); //Logging.TraceEvent(string.Format("PathName: {0}", queryObj["PathName"])); //Logging.TraceEvent(string.Format("State: {0}", queryObj["State"])); //Logging.TraceEvent(string.Format("Status: {0}", queryObj["Status"])); } if (!found) { Logging.TraceEvent("Unable to find service {0}", settings.ServiceName); throw new Exception(string.Format("Unable to find service {0}", settings.ServiceName)); } } }
public CacheClient(RemoteServiceSettings remoteServiceSettings, HttpClient httpClient = null) { if (remoteServiceSettings.IsLocal) { _cacheClient = new LocalCacheClient(); } else { _cacheClient = new RemoteCacheClient(remoteServiceSettings, httpClient); } }
private static void RegisterPublisher(IServiceCollection services, RemoteServiceSettings publisherSettings, IOptions <NotificationServiceSettings> options, ILoggerFactory loggerFactory, DiagnosticSource diagnosticSource, NotificationServiceSettings settings) { var serviceProvider = services.BuildServiceProvider(); if (publisherSettings.IsLocal) { RegisterLocalPublisher(services, publisherSettings, options, loggerFactory, diagnosticSource, settings, serviceProvider); } else { RegisterRemotePublisher(publisherSettings, services); } }
private static void RegisterLocalPublisher(IServiceCollection services, RemoteServiceSettings publisherSettings, IOptions <NotificationServiceSettings> options, ILoggerFactory loggerFactory, DiagnosticSource diagnosticSource, NotificationServiceSettings settings, ServiceProvider serviceProvider) { var eventChannelRepository = serviceProvider.GetService <EventChannelRepository>(); if (eventChannelRepository == null) { eventChannelRepository = new EventChannelRepository(settings.Repository.ProviderAssembly, new ConnectionOptions { Provider = settings.Repository.ProviderType, ConnectionString = settings.Repository.Channel, }, loggerFactory, diagnosticSource); services.AddSingleton(eventChannelRepository); } var eventSubscriptionRepository = serviceProvider.GetService <EventSubscriptionRepository>(); if (eventSubscriptionRepository == null) { eventSubscriptionRepository = new EventSubscriptionRepository(eventChannelRepository, settings.Repository.ProviderAssembly, new ConnectionOptions { Provider = settings.Repository.ProviderType, ConnectionString = settings.Repository.Subscription }, loggerFactory, diagnosticSource); services.AddSingleton(eventSubscriptionRepository); } var eventRepository = serviceProvider.GetService <EventRepository>(); if (eventRepository == null) { eventRepository = new EventRepository(eventChannelRepository, settings.Repository.ProviderAssembly, new ConnectionOptions { Provider = settings.Repository.ProviderType, ConnectionString = settings.Repository.Events }, loggerFactory, diagnosticSource); services.AddSingleton(eventRepository); } var publisher = new LocalPublisherClientService(eventChannelRepository, eventSubscriptionRepository, eventRepository, options, loggerFactory, diagnosticSource); services.AddSingleton <IPublisherClientService>(publisher); }
/// <summary> /// Sets <see cref="RemoteServiceSettings"/> to specified service. /// </summary> /// <param name="settings"><see cref="RemoteServiceSettings"/> object to set as settings.</param> internal static void SetServiceSettings(RemoteServiceSettings settings) { if (settings != null && m_ActiveConnections.ContainsKey(settings.ServiceUniqueID)) { InnerNetworkClient client = m_ActiveConnections[settings.ServiceUniqueID]; client.RemoteServiceSettings = settings; client.Send ( new SetSettingsResponse(SetSettingsResponse.Accepted).ToPacket() ); m_ActiveConnections[settings.ServiceUniqueID] = client; Logger.WriteLine(Source.InnerNetwork, "{0} (0x{1}) settings update done.", client.ServiceType, client.ServiceID.ToString("x2")); } }
public static void AddPublisher(this IServiceCollection services, IConfiguration configuration, ILoggerFactory loggerFactory, DiagnosticSource diagnosticSource) { var settings = new NotificationServiceSettings(); configuration.GetSection("Notification").Bind(settings); var options = Options.Create(settings); var publisherSettings = new RemoteServiceSettings(); configuration.GetSection("Notification:Publisher").Bind(publisherSettings); RegisterPublisher(services, publisherSettings, options, loggerFactory, diagnosticSource, settings); }
public SubscriberTest() { var loggerFactory = new LoggerFactory(); loggerFactory.AddConsole(); _eventChannelRepository = new EventChannelRepository("ECommerce.Data.FileStore", new ConnectionOptions { Provider = "FileDb", ConnectionString = new FileInfo($"data\\channel_{Guid.NewGuid()}.json").FullName }, loggerFactory, new MyDiagnosticSource()); _eventSubscriptionRepository = new EventSubscriptionRepository(_eventChannelRepository, "ECommerce.Data.FileStore", new ConnectionOptions { Provider = "FileDb", ConnectionString = new FileInfo($"data\\subscription_{Guid.NewGuid()}.json").FullName }, loggerFactory, new MyDiagnosticSource()); var eventRepository = new EventRepository(_eventChannelRepository, "ECommerce.Data.FileStore", new ConnectionOptions { Provider = "FileDb", ConnectionString = new FileInfo($"data\\event_{Guid.NewGuid()}.json").FullName }, loggerFactory, new MyDiagnosticSource()); _settings = Options.Create(new NotificationServiceSettings { ApplicationName = "MyApplication", ServiceName = "MyService", MaxLifeTimeSubscriber = 30, MaxLifeTimeMessage = 30, IsFifo = true, CallBackType = "ECommerce.Events.Clients.Tests,ECommerce.Events.Clients.Tests.MyCallBackTest" }); var subscriberSettings = new RemoteServiceSettings { IsLocal = true }; _subscriber = new SubscriberClientService(_eventChannelRepository, _eventSubscriptionRepository, eventRepository, _settings, loggerFactory, new MyDiagnosticSource()); }
public RemotePublisherTest() { var loggerFactory = new LoggerFactory(); loggerFactory.AddConsole(); var services = new ServiceCollection(); var config = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) .AddJsonFile("appSettings-RemotePublisher.json").Build(); var settings = new NotificationServiceSettings(); config.GetSection("Notification").Bind(settings); _channelName = $"{settings.ApplicationName}.{settings.ServiceName}"; var options = Options.Create(settings); var diagnostic = new MyDiagnosticSource(); // Arrange a local subscriber var subscriberSettings = new RemoteServiceSettings { IsLocal = true, Uri = "" }; services.AddSubscriber(subscriberSettings, options, loggerFactory, diagnostic); // Arrange a remote publisher //start a publisher web site var testHost = new TestPublisherHost(); services.AddPublisher(new RemoteServiceSettings { IsLocal = false, Uri = testHost.Server.BaseAddress.ToString() }, options, loggerFactory, diagnostic, testHost.Server.CreateClient()); _serviceProvider = services.BuildServiceProvider(); _subscriber = _serviceProvider.GetService <SubscriberClientService>(); _publisher = _serviceProvider.GetService <IPublisherClientService>(); }
public SubscriberClientServiceExtensionTestFullSettings() { var loggerFactory = new LoggerFactory(); loggerFactory.AddConsole(); var services = new ServiceCollection(); _settings = Options.Create(new NotificationServiceSettings { ApplicationName = "MyApplication", ServiceName = "MyService", MaxLifeTimeSubscriber = 30, MaxLifeTimeMessage = 30, IsFifo = true, CallBackType = "ECommerce.Events.Clients.Tests,ECommerce.Events.Clients.Tests.MyCallBackTest", Repository = new RepositorySetting { ProviderAssembly = "ECommerce.Data.FileStore", ProviderType = "FileDb", Channel = new FileInfo($"data\\channel_{Guid.NewGuid()}.json").FullName, Subscription = new FileInfo($"data\\subscription_{Guid.NewGuid()}.json").FullName, Events = new FileInfo($"data\\event_{Guid.NewGuid()}.json").FullName } }); var subscriberSettings = new RemoteServiceSettings { IsLocal = true }; services.AddSubscriber(subscriberSettings, _settings, loggerFactory, new MyDiagnosticSource()); _serviceProvider = services.BuildServiceProvider(); _subscriber = _serviceProvider.GetService <SubscriberClientService>(); }
private void Notify(LoggingRule rule, LoggingItem loggingItem) { if (_publishers.ContainsKey(rule.Notification)) { return; } var settings = new NotificationServiceSettings(); _configuration.GetSection("Notification").Bind(settings); var options = Options.Create(settings); settings.ServiceName = rule.Notification; var publisherSettings = new RemoteServiceSettings(); _configuration.GetSection("Notification:Publisher").Bind(publisherSettings); _publishers.TryAdd(rule.Notification, RegisterPublisher(publisherSettings, options, _loggerFactory, _diagnosticSource, settings)); _publishers[rule.Notification]?.Publish(JsonConvert.SerializeObject(loggingItem)); }
private IPublisherClientService RegisterPublisher(RemoteServiceSettings publisherSettings, IOptions <NotificationServiceSettings> options, ILoggerFactory loggerFactory, DiagnosticSource diagnosticSource, NotificationServiceSettings settings) { return(publisherSettings.IsLocal ? RegisterLocalPublisher(options, loggerFactory, diagnosticSource, settings) : RegisterRemotePublisher(publisherSettings)); }
private IPublisherClientService RegisterRemotePublisher(RemoteServiceSettings publisherSettings) { return(new RemotePublisherClientService(publisherSettings, _httpClient)); }
public static void AddSubscriber(this IServiceCollection services, RemoteServiceSettings remoteServiceSettings, IOptions <NotificationServiceSettings> options, ILoggerFactory loggerFactory, DiagnosticSource diagnosticSource, HttpClient remoteHttpClient = null) { RegisterSubscriber(services, remoteServiceSettings, options, loggerFactory, diagnosticSource); }
private static void RegisterSubscriber(IServiceCollection services, RemoteServiceSettings remoteServiceSettings, IOptions <NotificationServiceSettings> options, ILoggerFactory loggerFactory, DiagnosticSource diagnosticSource) { var settings = options.Value; if (!remoteServiceSettings.IsLocal) { return; } var serviceProvider = services.BuildServiceProvider(); var eventChannelRepository = serviceProvider.GetService <EventChannelRepository>(); if (eventChannelRepository == null) { eventChannelRepository = new EventChannelRepository(settings.Repository.ProviderAssembly, new ConnectionOptions { Provider = settings.Repository.ProviderType, ConnectionString = settings.Repository.Channel, }, loggerFactory, diagnosticSource); services.AddSingleton(eventChannelRepository); } var eventSubscriptionRepository = serviceProvider.GetService <EventSubscriptionRepository>(); if (eventSubscriptionRepository == null) { eventSubscriptionRepository = new EventSubscriptionRepository(eventChannelRepository, settings.Repository.ProviderAssembly, new ConnectionOptions { Provider = settings.Repository.ProviderType, ConnectionString = settings.Repository.Subscription }, loggerFactory, diagnosticSource); services.AddSingleton(eventSubscriptionRepository); } var eventRepository = serviceProvider.GetService <EventRepository>(); if (eventRepository == null) { eventRepository = new EventRepository(eventChannelRepository, settings.Repository.ProviderAssembly, new ConnectionOptions { Provider = settings.Repository.ProviderType, ConnectionString = settings.Repository.Events }, loggerFactory, diagnosticSource); services.AddSingleton(eventRepository); } var subscriber = new SubscriberClientService(eventChannelRepository, eventSubscriptionRepository, eventRepository, options, loggerFactory, diagnosticSource); services.AddSingleton(subscriber); services.AddSingleton <IHostedService>(subscriber); }
private static void RegisterRemotePublisher(RemoteServiceSettings publisherSettings, IServiceCollection services) { services.AddSingleton <IPublisherClientService>(new RemotePublisherClientService(publisherSettings, _httpClient)); }