diff --git a/Directory.Build.props b/Directory.Build.props
new file mode 100644
index 0000000..2d37186
--- /dev/null
+++ b/Directory.Build.props
@@ -0,0 +1,11 @@
+
+
+ 1.3.0-prerelease
+ Liam Morrow
+ Apache-2.0
+ true
+ snupkg
+ true
+ https://github.com/LiamMorrow/OrgnalR
+
+
diff --git a/src/OrgnalR.Backplane.GrainAdaptors/DelegateClientMessageObserver.cs b/src/OrgnalR.Backplane.GrainAdaptors/DelegateClientMessageObserver.cs
index d6d3f28..c38caf5 100644
--- a/src/OrgnalR.Backplane.GrainAdaptors/DelegateClientMessageObserver.cs
+++ b/src/OrgnalR.Backplane.GrainAdaptors/DelegateClientMessageObserver.cs
@@ -20,7 +20,7 @@ public DelegateClientMessageObserver(string connectionId, Func
OrgnalR.Backplane.GrainAdaptors
- 1.2.1
Liam Morrow
OrgnalR Backplane Grain Adaptors
@@ -16,11 +15,6 @@
A core package of OrgnalR. You likely want one of either `OrgnalR.SignalR`, or `OrgnalR.OrleansSilo`
- Apache-2.0
- true
- snupkg
- true
- https://github.com/LiamMorrow/OrgnalR
diff --git a/src/OrgnalR.Backplane.GrainImplementations/ClientGrain.cs b/src/OrgnalR.Backplane.GrainImplementations/ClientGrain.cs
index 65cefeb..8b4af87 100644
--- a/src/OrgnalR.Backplane.GrainImplementations/ClientGrain.cs
+++ b/src/OrgnalR.Backplane.GrainImplementations/ClientGrain.cs
@@ -16,11 +16,11 @@ public class ClientGrain : Grain, IClientGrain
OnFailBeforeDefunct = x => x.SubscriptionEnded()
};
- private IRewindableMessageGrain rewoundMessagesGrain = null!;
+ private IRewindableMessageGrain rewoundMessagesGrain = null!;
public override Task OnActivateAsync()
{
- rewoundMessagesGrain = GrainFactory.GetGrain>(this.GetPrimaryKeyString());
+ rewoundMessagesGrain = GrainFactory.GetGrain>(this.GetPrimaryKeyString());
return base.OnActivateAsync();
}
@@ -33,7 +33,7 @@ public override Task OnDeactivateAsync()
return base.OnDeactivateAsync();
}
- public async Task AcceptMessageAsync(HubInvocationMessage message, GrainCancellationToken cancellationToken)
+ public async Task AcceptMessageAsync(MethodMessage message, GrainCancellationToken cancellationToken)
{
var handle = await rewoundMessagesGrain.PushMessageAsync(message);
observers.Notify(x => x.ReceiveMessage(message, handle));
diff --git a/src/OrgnalR.Backplane.GrainImplementations/OrgnalR.Backplane.GrainImplementations.csproj b/src/OrgnalR.Backplane.GrainImplementations/OrgnalR.Backplane.GrainImplementations.csproj
index a13fa88..f73c9e9 100644
--- a/src/OrgnalR.Backplane.GrainImplementations/OrgnalR.Backplane.GrainImplementations.csproj
+++ b/src/OrgnalR.Backplane.GrainImplementations/OrgnalR.Backplane.GrainImplementations.csproj
@@ -8,7 +8,6 @@
OrgnalR.Backplane.GrainImplementations
- 1.2.1
Liam Morrow
OrgnalR Backplane Grain Implementations
@@ -16,11 +15,6 @@
A core package of OrgnalR. You likely want one of either `OrgnalR.SignalR`, or `OrgnalR.OrleansSilo`
- Apache-2.0
- true
- snupkg
- true
- https://github.com/LiamMorrow/OrgnalR
diff --git a/src/OrgnalR.Backplane.GrainInterfaces/IClientGrain.cs b/src/OrgnalR.Backplane.GrainInterfaces/IClientGrain.cs
index 1c8f838..62af90a 100644
--- a/src/OrgnalR.Backplane.GrainInterfaces/IClientGrain.cs
+++ b/src/OrgnalR.Backplane.GrainInterfaces/IClientGrain.cs
@@ -7,7 +7,7 @@ namespace OrgnalR.Backplane.GrainInterfaces
{
public interface IClientGrain : IGrainWithStringKey
{
- Task AcceptMessageAsync(HubInvocationMessage message, GrainCancellationToken cancellationToken);
+ Task AcceptMessageAsync(MethodMessage message, GrainCancellationToken cancellationToken);
///
/// Subscribes to messages for this client, optionally replaying all messages since a last seen message
///
@@ -19,7 +19,7 @@ public interface IClientGrain : IGrainWithStringKey
public interface IClientMessageObserver : IGrainObserver
{
- void ReceiveMessage(HubInvocationMessage message, MessageHandle handle);
+ void ReceiveMessage(MethodMessage message, MessageHandle handle);
void SubscriptionEnded();
}
}
diff --git a/src/OrgnalR.Backplane.GrainInterfaces/OrgnalR.Backplane.GrainInterfaces.csproj b/src/OrgnalR.Backplane.GrainInterfaces/OrgnalR.Backplane.GrainInterfaces.csproj
index c031046..942b72f 100644
--- a/src/OrgnalR.Backplane.GrainInterfaces/OrgnalR.Backplane.GrainInterfaces.csproj
+++ b/src/OrgnalR.Backplane.GrainInterfaces/OrgnalR.Backplane.GrainInterfaces.csproj
@@ -8,7 +8,6 @@
OrgnalR.GrainInterfaces
- 1.2.1
Liam Morrow
OrgnalR Grain Interfaces package
@@ -16,11 +15,6 @@
A core package of OrgnalR. You likely want one of either `OrgnalR.SignalR`, or `OrgnalR.OrleansSilo`
- Apache-2.0
- true
- snupkg
- true
- https://github.com/LiamMorrow/OrgnalR
diff --git a/src/OrgnalR.Backplane/OrgnalR.Backplane.csproj b/src/OrgnalR.Backplane/OrgnalR.Backplane.csproj
index 46bf71a..6895400 100644
--- a/src/OrgnalR.Backplane/OrgnalR.Backplane.csproj
+++ b/src/OrgnalR.Backplane/OrgnalR.Backplane.csproj
@@ -8,7 +8,6 @@
OrgnalR.Backplane
- 1.2.1
Liam Morrow
OrgnalR Backplane package
@@ -16,11 +15,6 @@
A core package of OrgnalR. You likely want one of either `OrgnalR.SignalR`, or `OrgnalR.OrleansSilo`
- Apache-2.0
- true
- snupkg
- true
- https://github.com/LiamMorrow/OrgnalR
diff --git a/src/OrgnalR.Backplane/OrgnalRHubLifetimeManager.cs b/src/OrgnalR.Backplane/OrgnalRHubLifetimeManager.cs
index db514a3..cad3493 100644
--- a/src/OrgnalR.Backplane/OrgnalRHubLifetimeManager.cs
+++ b/src/OrgnalR.Backplane/OrgnalRHubLifetimeManager.cs
@@ -113,12 +113,12 @@ public override Task RemoveFromGroupAsync(string connectionId, string groupName,
public override Task SendAllAsync(string methodName, object[] args, CancellationToken cancellationToken = default)
{
- return messageObserver.SendAllMessageAsync(new AnonymousMessage(EmptySet.Instance, new InvocationMessage(methodName, args)), cancellationToken);
+ return messageObserver.SendAllMessageAsync(new AnonymousMessage(EmptySet.Instance, new MethodMessage(methodName, args)), cancellationToken);
}
public override Task SendAllExceptAsync(string methodName, object[] args, IReadOnlyList excludedConnectionIds, CancellationToken cancellationToken = default)
{
- return messageObserver.SendAllMessageAsync(new AnonymousMessage(excludedConnectionIds.ToSet(), new InvocationMessage(methodName, args)), cancellationToken);
+ return messageObserver.SendAllMessageAsync(new AnonymousMessage(excludedConnectionIds.ToSet(), new MethodMessage(methodName, args)), cancellationToken);
}
public override Task SendConnectionAsync(string connectionId, string methodName, object[] args, CancellationToken cancellationToken = default)
@@ -132,7 +132,7 @@ public override Task SendConnectionsAsync(IReadOnlyList connectionIds, s
foreach (var connectionId in connectionIds)
{
var local = hubConnectionStore[connectionId];
- var msg = new AddressedMessage(connectionId, new InvocationMessage(methodName, args));
+ var msg = new AddressedMessage(connectionId, new MethodMessage(methodName, args));
if (local != null)
{
toAwait.Add(OnAddressedMessageReceived(msg, default));
@@ -148,13 +148,13 @@ public override Task SendConnectionsAsync(IReadOnlyList connectionIds, s
public override Task SendGroupAsync(string groupName, string methodName, object[] args, CancellationToken cancellationToken = default)
{
var group = groupActorProvider.GetGroupActor(groupName);
- return group.AcceptMessageAsync(new AnonymousMessage(EmptySet.Instance, new InvocationMessage(methodName, args)), cancellationToken);
+ return group.AcceptMessageAsync(new AnonymousMessage(EmptySet.Instance, new MethodMessage(methodName, args)), cancellationToken);
}
public override Task SendGroupExceptAsync(string groupName, string methodName, object[] args, IReadOnlyList excludedConnectionIds, CancellationToken cancellationToken = default)
{
var group = groupActorProvider.GetGroupActor(groupName);
- return group.AcceptMessageAsync(new AnonymousMessage(excludedConnectionIds.ToSet(), new InvocationMessage(methodName, args)), cancellationToken);
+ return group.AcceptMessageAsync(new AnonymousMessage(excludedConnectionIds.ToSet(), new MethodMessage(methodName, args)), cancellationToken);
}
public override Task SendGroupsAsync(IReadOnlyList groupNames, string methodName, object[] args, CancellationToken cancellationToken = default)
@@ -167,7 +167,7 @@ public override Task SendGroupsAsync(IReadOnlyList groupNames, string me
public override Task SendUserAsync(string userId, string methodName, object[] args, CancellationToken cancellationToken = default)
{
var user = userActorProvider.GetUserActor(userId);
- return user.AcceptMessageAsync(new AnonymousMessage(EmptySet.Instance, new InvocationMessage(methodName, args)), cancellationToken);
+ return user.AcceptMessageAsync(new AnonymousMessage(EmptySet.Instance, new MethodMessage(methodName, args)), cancellationToken);
}
public override Task SendUsersAsync(IReadOnlyList userIds, string methodName, object[] args, CancellationToken cancellationToken = default)
@@ -204,7 +204,7 @@ private async Task OnAddressedMessageReceived(AddressedMessage arg, MessageHandl
return;
if (connection.ConnectionAborted.IsCancellationRequested)
return;
- await connection.WriteAsync(arg.Payload);
+ await connection.WriteAsync(new InvocationMessage(arg.Payload.MethodName, arg.Payload.Args));
var latestClientMessageHandle = GetClientMessageHandle(connection);
if (handle != default
@@ -248,7 +248,7 @@ private async Task OnAnonymousMessageReceived(AnonymousMessage msg, MessageHandl
continue;
if (conn.ConnectionAborted.IsCancellationRequested)
continue;
- toAwait.Add(conn.WriteAsync(msg.Payload));
+ toAwait.Add(conn.WriteAsync(new InvocationMessage(msg.Payload.MethodName, msg.Payload.Args)));
}
await Task.WhenAll(toAwait.Where(vt => !vt.IsCompleted).Select(vt => vt.AsTask()));
if (handle != default
diff --git a/src/OrgnalR.Core/OrgnalR.Core.csproj b/src/OrgnalR.Core/OrgnalR.Core.csproj
index 5d34664..e0d1fe4 100644
--- a/src/OrgnalR.Core/OrgnalR.Core.csproj
+++ b/src/OrgnalR.Core/OrgnalR.Core.csproj
@@ -8,7 +8,6 @@
OrgnalR.Core
- 1.2.1
Liam Morrow
OrgnalR Core package
@@ -16,13 +15,13 @@
A core package of OrgnalR. You likely want one of either `OrgnalR.SignalR`, or `OrgnalR.OrleansSilo`
- Apache-2.0
- true
- snupkg
- true
- https://github.com/LiamMorrow/OrgnalR
+
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
+
diff --git a/src/OrgnalR.Core/Provider/AddressedMessage.cs b/src/OrgnalR.Core/Provider/AddressedMessage.cs
index 16c1d39..fe6bb22 100644
--- a/src/OrgnalR.Core/Provider/AddressedMessage.cs
+++ b/src/OrgnalR.Core/Provider/AddressedMessage.cs
@@ -6,11 +6,11 @@ namespace OrgnalR.Core.Provider
public class AddressedMessage
{
public string ConnectionId { get; }
- public HubInvocationMessage Payload { get; }
- public AddressedMessage(string connectionId, HubInvocationMessage messagePayload)
+ public MethodMessage Payload { get; }
+ public AddressedMessage(string connectionId, MethodMessage payload)
{
ConnectionId = connectionId;
- Payload = messagePayload;
+ Payload = payload;
}
}
diff --git a/src/OrgnalR.Core/Provider/AnonymousMessage.cs b/src/OrgnalR.Core/Provider/AnonymousMessage.cs
index bce9d35..8850d09 100644
--- a/src/OrgnalR.Core/Provider/AnonymousMessage.cs
+++ b/src/OrgnalR.Core/Provider/AnonymousMessage.cs
@@ -6,11 +6,12 @@ namespace OrgnalR.Core.Provider
public class AnonymousMessage
{
public ISet Excluding { get; }
- public HubInvocationMessage Payload { get; }
- public AnonymousMessage(ISet excluding, HubInvocationMessage messagePayload)
+ public MethodMessage Payload { get; }
+
+ public AnonymousMessage(ISet excluding, MethodMessage payload)
{
Excluding = excluding;
- Payload = messagePayload;
+ Payload = payload;
}
}
diff --git a/src/OrgnalR.Core/Provider/MethodMessage.cs b/src/OrgnalR.Core/Provider/MethodMessage.cs
new file mode 100644
index 0000000..8837637
--- /dev/null
+++ b/src/OrgnalR.Core/Provider/MethodMessage.cs
@@ -0,0 +1,15 @@
+namespace OrgnalR.Core.Provider
+{
+ public class MethodMessage
+ {
+ public string MethodName { get; }
+
+ public object[] Args { get; }
+
+ public MethodMessage(string methodName, object[] args)
+ {
+ MethodName = methodName;
+ Args = args;
+ }
+ }
+}
diff --git a/src/OrgnalR.OrleansSilo/OrgnalR.OrleansSilo.csproj b/src/OrgnalR.OrleansSilo/OrgnalR.OrleansSilo.csproj
index 4c2cba4..d220a72 100644
--- a/src/OrgnalR.OrleansSilo/OrgnalR.OrleansSilo.csproj
+++ b/src/OrgnalR.OrleansSilo/OrgnalR.OrleansSilo.csproj
@@ -8,7 +8,6 @@
OrgnalR.OrleansSilo
- 1.2.1
Liam Morrow
OrgnalR Orleans Silo
@@ -17,11 +16,6 @@
The Orleans silo library for OrgnalR. This is the package you'd want on the Orleans Silo application.
For the SignalR server, use OrgnalR.SignalR
- Apache-2.0
- true
- snupkg
- true
- https://github.com/LiamMorrow/OrgnalR
diff --git a/src/OrgnalR.SignalR/Extensions.cs b/src/OrgnalR.SignalR/Extensions.cs
index 1e51404..3e09a95 100644
--- a/src/OrgnalR.SignalR/Extensions.cs
+++ b/src/OrgnalR.SignalR/Extensions.cs
@@ -164,7 +164,7 @@ public OrgnalRHubLifetimeManagerFactory(IServiceProvider services)
services.GetService>(),
services.GetService>(),
services.GetRequiredService>>()
- ).Result;
+ ).GetAwaiter().GetResult();
}
public override Task AddToGroupAsync(string connectionId, string groupName, CancellationToken cancellationToken = default)
{
diff --git a/src/OrgnalR.SignalR/OrgnalR.SignalR.csproj b/src/OrgnalR.SignalR/OrgnalR.SignalR.csproj
index 9fd5b08..68779be 100644
--- a/src/OrgnalR.SignalR/OrgnalR.SignalR.csproj
+++ b/src/OrgnalR.SignalR/OrgnalR.SignalR.csproj
@@ -8,7 +8,6 @@
OrgnalR.SignalR
- 1.2.1
Liam Morrow
OrgnalR SignalR
@@ -17,11 +16,6 @@
The SignalR library for OrgnalR. This is the package you'd want on the SignalR server.
For the Orleans Silo, use OrgnalR.OrleansSilo
- Apache-2.0
- true
- snupkg
- true
- https://github.com/LiamMorrow/OrgnalR
diff --git a/test/OrgnalR.Tests/Grains/RewindableMessageGrainTests.cs b/test/OrgnalR.Tests/Grains/RewindableMessageGrainTests.cs
index 3c614b4..4e6abec 100644
--- a/test/OrgnalR.Tests/Grains/RewindableMessageGrainTests.cs
+++ b/test/OrgnalR.Tests/Grains/RewindableMessageGrainTests.cs
@@ -16,15 +16,16 @@ public class RewindableMessageGrainTests : TestKitBase
[Fact]
public async Task GetMessageSinceReturnsAllMessagesIfInBounds()
{
- Silo.ServiceProvider.AddService(new OrgnalRSiloConfig
- {
- MaxMessageRewind = 1
- });
+ Silo.ServiceProvider.AddService(
+ new OrgnalRSiloConfig
+ {
+ MaxMessageRewind = 1,
+ });
var grain = await Silo.CreateGrainAsync>(Guid.NewGuid().ToString());
- var handle = await grain.PushMessageAsync(new AnonymousMessage(new HashSet(), new InvocationMessage("TestTarget1", new object[0])));
+ var handle = await grain.PushMessageAsync(new AnonymousMessage(new HashSet(), new MethodMessage("TestTarget1", new object[0])));
var since = await grain.GetMessagesSinceAsync(handle);
Assert.Empty(since);
- var secondMsg = new AnonymousMessage(new HashSet(), new InvocationMessage("TestTarget2", new object[0]));
+ var secondMsg = new AnonymousMessage(new HashSet(), new MethodMessage("TestTarget2", new object[0]));
var handle2 = await grain.PushMessageAsync(secondMsg);
since = await grain.GetMessagesSinceAsync(handle2);
Assert.Empty(since);
@@ -44,7 +45,7 @@ public async Task GetMessageSinceReturnsAllMessagesIfInBoundsLargerSet()
});
var grain = await Silo.CreateGrainAsync>(Guid.NewGuid().ToString());
var handles = Enumerable.Range(0, 20)
- .Select(i => grain.PushMessageAsync(new AnonymousMessage(new HashSet(), new InvocationMessage(i.ToString(), new object[0]))))
+ .Select(i => grain.PushMessageAsync(new AnonymousMessage(new HashSet(), new MethodMessage(i.ToString(), new object[0]))))
.Select(x => x.Result)
.ToList();
@@ -75,9 +76,9 @@ public async Task GetMessageSinceThrowsWhenOutOfBounds()
MaxMessageRewind = 1
});
var grain = await Silo.CreateGrainAsync>(Guid.NewGuid().ToString());
- var handle = await grain.PushMessageAsync(new AnonymousMessage(new HashSet(), new InvocationMessage("TestTarget1", new object[0])));
- await grain.PushMessageAsync(new AnonymousMessage(new HashSet(), new InvocationMessage("TestTarget2", new object[0])));
- await grain.PushMessageAsync(new AnonymousMessage(new HashSet(), new InvocationMessage("TestTarget3", new object[0])));
+ var handle = await grain.PushMessageAsync(new AnonymousMessage(new HashSet(), new MethodMessage("TestTarget1", new object[0])));
+ await grain.PushMessageAsync(new AnonymousMessage(new HashSet(), new MethodMessage("TestTarget2", new object[0])));
+ await grain.PushMessageAsync(new AnonymousMessage(new HashSet(), new MethodMessage("TestTarget3", new object[0])));
await Assert.ThrowsAsync(async () =>
{
await grain.GetMessagesSinceAsync(handle);
@@ -92,7 +93,7 @@ public async Task GetMessageSinceReturnsEmptyWhenGroupChanges()
MaxMessageRewind = 1
});
var grain = await Silo.CreateGrainAsync>(Guid.NewGuid().ToString());
- var handle = await grain.PushMessageAsync(new AnonymousMessage(new HashSet(), new InvocationMessage("TestTarget1", new object[0])));
+ var handle = await grain.PushMessageAsync(new AnonymousMessage(new HashSet(), new MethodMessage("TestTarget1", new object[0])));
handle = new MessageHandle(handle.MessageId, Guid.NewGuid());
Assert.Empty(await grain.GetMessagesSinceAsync(handle));
}
@@ -105,7 +106,7 @@ public async Task GetMessageSinceReturnsEmptyWhenHandleNewer()
MaxMessageRewind = 1
});
var grain = await Silo.CreateGrainAsync>(Guid.NewGuid().ToString());
- var handle = await grain.PushMessageAsync(new AnonymousMessage(new HashSet(), new InvocationMessage("TestTarget1", new object[0])));
+ var handle = await grain.PushMessageAsync(new AnonymousMessage(new HashSet(), new MethodMessage("TestTarget1", new object[0])));
handle = new MessageHandle(handle.MessageId + 1, handle.MessageGroup);
Assert.Empty(await grain.GetMessagesSinceAsync(handle));
}