public async Task GetMessageSinceReturnsAllMessagesIfInBounds() { Silo.ServiceProvider.AddService( new OrgnalRSiloConfig { MaxMessageRewind = 1, }); var grain = await Silo.CreateGrainAsync <RewindableMessageGrain <AnonymousMessage> >(Guid.NewGuid().ToString()); var handle = await grain.PushMessageAsync(new AnonymousMessage(new HashSet <string>(), new MethodMessage("TestTarget1", new object[0]))); var since = await grain.GetMessagesSinceAsync(handle); Assert.Empty(since); var secondMsg = new AnonymousMessage(new HashSet <string>(), new MethodMessage("TestTarget2", new object[0])); var handle2 = await grain.PushMessageAsync(secondMsg); since = await grain.GetMessagesSinceAsync(handle2); Assert.Empty(since); since = await grain.GetMessagesSinceAsync(handle); Assert.NotEmpty(since); Assert.Equal(handle2, since.Single().handle); Assert.Equal(secondMsg, since.Single().message); }
public Task AcceptMessageAsync(AnonymousMessage message, GrainCancellationToken cancellationToken) { return(Task.WhenAll( State.ConnectionIds .Where(connId => !message.Excluding.Contains(connId)) .Select(connId => GrainFactory.GetGrain <IClientGrain>(connId)) .Select(client => client.AcceptMessageAsync(message.Payload, cancellationToken)) ).WithCancellation(cancellationToken.CancellationToken)); }
public Task AcceptMessageAsync(AnonymousMessage message, CancellationToken cancellationToken = default) { message = new AnonymousMessage(message.Excluding.Select(x => $"{hubName}::{x}").ToSet(), message.Payload); var token = new GrainCancellationTokenSource(); if (cancellationToken != default) { cancellationToken.Register(() => token.Cancel()); } return(groupActorGrain.AcceptMessageAsync(message, token.Token)); }
public Task SendAllMessageAsync(AnonymousMessage allMessage, CancellationToken cancellationToken = default) { var token = new GrainCancellationTokenSource(); if (cancellationToken != default) { cancellationToken.Register(() => token.Cancel()); } var hubNamespacesAllMessage = new AnonymousMessage( allMessage.Excluding.Select(id => $"{hubName}::{id}").ToSet(), allMessage.Payload ); return(grainFactory.GetGrain <IAnonymousMessageGrain>(hubName).AcceptMessageAsync(allMessage, token.Token)); }
public Task SendAllMessageAsync(AnonymousMessage allMessage, CancellationToken cancellationToken = default) { return(@delegate.SendAllMessageAsync(allMessage, cancellationToken)); }
public void ReceiveMessage(AnonymousMessage message, MessageHandle handle) { messageCallback(message, handle).Ignore(); }
public async Task AcceptMessageAsync(AnonymousMessage message, GrainCancellationToken cancellationToken) { var handle = await rewoundMessagesGrain.PushMessageAsync(message); observers.Notify(x => x.ReceiveMessage(message, handle)); }