예제 #1
0
        public async Task <AppendEntriesResponse> Send(AppendEntries appendEntries)
        {
            try
            {
                var serverToSendMessageTo = _serviceRegistry.Get(RaftyServiceDiscoveryName.Get()).First(x => x.Id == appendEntries.FollowerId);
                var json = JsonConvert.SerializeObject(appendEntries, Formatting.None, new JsonSerializerSettings
                {
                    TypeNameHandling = TypeNameHandling.All
                });
                var httpContent = new StringContent(json);
                httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                using (var httpClient = new HttpClient())
                {
                    httpClient.BaseAddress = serverToSendMessageTo.Location;
                    var response = await httpClient.PostAsync(_appendEntriesUrl, httpContent);

                    response.EnsureSuccessStatusCode();
                    var content = await response.Content.ReadAsStringAsync();

                    var appendEntriesResponse = JsonConvert.DeserializeObject <AppendEntriesResponse>(content);
                    return(appendEntriesResponse);
                }
            }
            catch (Exception exception)
            {
                _logger.LogError(new EventId(1), exception, "Error in Send(AppendEntries appendEntries)");
                throw;
            }
        }
        protected override ISerializer <TModel> GetSerializer <TModel>()
        {
            Type   serviceType = typeof(IBinarySerializer <TModel>);
            object instance    = serviceRegistry.Get(serviceType);

            ISerializer <TModel> serializer = (IBinarySerializer <TModel>)instance;

            return(serializer);
        }
        private IServiceConfig GetConfig(string service)
        {
            if (string.IsNullOrEmpty(service))
            {
                return(null);
            }

            var config = _serviceRegistry.Get(service);

            if (config == null)
            {
                throw new ExpectationException($"Configuration for service \"{service}\" was not found.");
            }

            return(config);
        }
        public HttpClientFactoryTests()
        {
            _serviceRegistry = A.Fake <IServiceRegistry>();

            _config1 = A.Fake <IServiceConfig>();

            A.CallTo(() => _serviceRegistry.Get(ServiceName)).Returns(_config1);
            A.CallTo(() => _serviceRegistry.GetAll()).Returns(new List <IServiceConfig> {
                _config1, A.Fake <IServiceConfig>()
            });

            A.CallTo(() => _config1.AllowRedirect).Returns(true);
            A.CallTo(() => _config1.Timeout).Returns(TimeSpan.FromSeconds(222));
            A.CallTo(() => _config1.BaseAddress).Returns("http://google.com");

            A.CallTo(() => A.Fake <IServiceConfig>().AllowRedirect).Returns(false);
            A.CallTo(() => A.Fake <IServiceConfig>().Timeout).Returns(TimeSpan.FromSeconds(333));
            A.CallTo(() => A.Fake <IServiceConfig>().BaseAddress).Returns("http://yandex.ru");

            _underTest = new HttpClientFactory(
                _serviceRegistry
                );
        }
예제 #5
0
        public IQueryable <TModel> GetAll <TModel>(ISession currentSession)

        {
            IDao <TModel>       genericDao = serviceRegistry.Get <IDao <TModel> >();
            IQueryable <TModel> result     = genericDao.GetAll(currentSession);

            return(result);
        }
        public ISession Get <TModel>(IDao <TModel> dao, string sessionAlias)
        {
            Type daoType = dao.GetType();
            Type baseParameterizedType = typeof(ILuceneDao <TModel>);
            bool isAssignableFrom      = baseParameterizedType.IsAssignableFrom(daoType);

            if (!isAssignableFrom)
            {
                return(null);
            }

            ISessionProviderFactory <LuceneSession <TModel> > sessionProviderFactory = serviceRegistry.Get <ISessionProviderFactory <LuceneSession <TModel> > >();
            ISessionProvider <LuceneSession <TModel> >        sessionProvider        = sessionProviderFactory.Build(sessionAlias);
            LuceneSession <TModel> luceneSession = sessionProvider.Current();

            return(luceneSession);
        }
        public void Create_When_ServiceName_Specified_But_Not_Found_Should_Throw_ExpectationException()
        {
            A.CallTo(() => _serviceRegistry.Get(ServiceName)).Returns(null);

            Assert.Throws <StLine.Exceptions.ExpectationException>(() => _underTest.Create(ServiceName));
        }