void SendCacheUpdateToClient(Uri uri, Guid clientId) { IEndpoint endpoint = _bus.GetEndpoint(uri); IEnumerable <SubscriptionClientSaga> sagas = _subscriptionClientSagas .Where(x => x.CurrentState == SubscriptionClientSaga.Active && x.ControlUri != uri) .ToList(); sagas.Each(client => { _log.DebugFormat("Sending AddClient {0} to {1}", client.CorrelationId, uri); var message = new AddSubscriptionClient(client.CorrelationId, client.ControlUri, client.DataUri); endpoint.Send(message, x => x.SetSourceAddress(_bus.Endpoint.Address.Uri)); }); List <Guid> clients = sagas.Select(x => x.CorrelationId).ToList(); SubscriptionInformation[] subscriptions = _subscriptionSagas .Where(x => x.CurrentState == SubscriptionSaga.Active && clients.Contains(x.SubscriptionInfo.ClientId)) .Select(x => x.SubscriptionInfo).ToArray(); _log.InfoFormat("Sending {0} subscriptions to {1}", subscriptions.Length, uri); var response = new SubscriptionRefresh(subscriptions); endpoint.Send(response, x => x.SetSourceAddress(_bus.Endpoint.Address.Uri)); }
public void Should_serialize_an_empty_message() { byte[] serializedMessageData; var serializer = new TSerializer(); var message = new SubscriptionRefresh(Enumerable.Empty <SubscriptionInformation>()); using (var output = new MemoryStream()) { serializer.Serialize(output, new SendContext <SubscriptionRefresh>(message)); serializedMessageData = output.ToArray(); Trace.WriteLine(Encoding.UTF8.GetString(serializedMessageData)); } using (var input = new MemoryStream(serializedMessageData)) { var receiveContext = ReceiveContext.FromBodyStream(input); serializer.Deserialize(receiveContext); IConsumeContext <SubscriptionRefresh> context; receiveContext.TryGetContext(out context).ShouldBeTrue(); context.ShouldNotBeNull(); context.Message.Subscriptions.Count.ShouldEqual(message.Subscriptions.Count); } }
public void Should_serialize_a_message_with_one_list_item() { byte[] serializedMessageData; var serializer = new TSerializer(); var message = new SubscriptionRefresh(new[] { new SubscriptionInformation(Guid.NewGuid(), 1, typeof(object), new Uri("http://localhost/")) }); using (var output = new MemoryStream()) { serializer.Serialize(output, new SendContext <SubscriptionRefresh>(message)); serializedMessageData = output.ToArray(); Console.WriteLine(Encoding.UTF8.GetString(serializedMessageData)); } using (var input = new MemoryStream(serializedMessageData)) { var receiveContext = ReceiveContext.FromBodyStream(input); serializer.Deserialize(receiveContext); IConsumeContext <SubscriptionRefresh> context; receiveContext.TryGetContext(out context).ShouldBeTrue(); context.ShouldNotBeNull(); context.Message.Subscriptions.Count.ShouldEqual(message.Subscriptions.Count); } }
private void SendCacheUpdateToClient(Uri uri) { var subscriptions = _subscriptionSagas.Where(x => x.CurrentState == SubscriptionSaga.Active) .Select(x => x.SubscriptionInfo); var response = new SubscriptionRefresh(subscriptions); IEndpoint endpoint = _endpointFactory.GetEndpoint(uri); endpoint.Send(response, x => x.SetSourceAddress(_bus.Endpoint.Uri)); }