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);
        }
Beispiel #2
0
 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));
 }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
 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));
        }