Skip to content

Commit fd5ac28

Browse files
feat(hub context): add string hub version (#35)
1 parent 4f57928 commit fd5ac28

File tree

4 files changed

+34
-12
lines changed

4 files changed

+34
-12
lines changed

CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
[_vNext_](https://github.com/sketch7/SignalR.Orleans/compare/1.0.0...1.1.0) (2019-X-X)
44

5+
## [4.0.4](https://github.com/sketch7/SignalR.Orleans/compare/4.0.3...4.0.4) (2023-08-08)
6+
7+
### Features
8+
9+
- **hub context:** add `HubContext` non generic version (for dynamic usages)
10+
511
## [4.0.3](https://github.com/sketch7/SignalR.Orleans/compare/4.0.2...4.0.3) (2023-06-09)
612
No changes CI switching testing
713

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@sketch7/signalr-orleans",
3-
"version": "4.0.3",
3+
"version": "4.0.4",
44
"versionSuffix": "",
55
"scripts": {
66
"pack": "bash ./tools/pack.sh",

src/SignalR.Orleans/Core/GrainExtensions.cs

+4-1
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,11 @@ public static void SendOneWay(this IHubMessageInvoker grain, string methodName,
3333

3434
public static class GrainFactoryExtensions
3535
{
36+
public static HubContext GetHub(this IGrainFactory grainFactory, string hubName)
37+
=> new(grainFactory, hubName);
38+
3639
public static HubContext<THub> GetHub<THub>(this IGrainFactory grainFactory)
37-
=> new HubContext<THub>(grainFactory);
40+
=> new(grainFactory);
3841

3942
internal static IClientGrain GetClientGrain(this IGrainFactory factory, string hubName, string connectionId)
4043
=> factory.GetGrain<IClientGrain>(ConnectionGrainKey.Build(hubName, connectionId));

src/SignalR.Orleans/Core/HubContext.cs

+23-10
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,34 @@
44

55
namespace SignalR.Orleans.Core;
66

7-
public class HubContext<THub>
7+
public class HubContext<THub> : HubContext
88
{
9-
private readonly IGrainFactory _grainFactory;
10-
private readonly string _hubName;
9+
public HubContext(IGrainFactory grainFactory) : base(grainFactory, GetHubName())
10+
{
11+
}
1112

12-
public HubContext(IGrainFactory grainFactory)
13+
public static string GetHubName()
1314
{
14-
_grainFactory = grainFactory;
1515
var hubType = typeof(THub);
16-
_hubName = hubType.IsInterface && hubType.Name.StartsWith("I")
16+
return hubType.IsInterface && hubType.Name.StartsWith("I")
1717
? hubType.Name.Substring(1)
1818
: hubType.Name;
1919
}
20+
}
21+
22+
public class HubContext
23+
{
24+
private readonly IGrainFactory _grainFactory;
25+
26+
public string HubName { get; init; }
27+
28+
public HubContext(IGrainFactory grainFactory, string hubName)
29+
{
30+
_grainFactory = grainFactory;
31+
HubName = hubName;
32+
}
2033

21-
public IClientGrain Client(string connectionId) => _grainFactory.GetClientGrain(_hubName, connectionId);
22-
public IGroupGrain Group(string groupName) => _grainFactory.GetGroupGrain(_hubName, groupName);
23-
public IUserGrain User(string userId) => _grainFactory.GetUserGrain(_hubName, userId);
24-
}
34+
public IClientGrain Client(string connectionId) => _grainFactory.GetClientGrain(HubName, connectionId);
35+
public IGroupGrain Group(string groupName) => _grainFactory.GetGroupGrain(HubName, groupName);
36+
public IUserGrain User(string userId) => _grainFactory.GetUserGrain(HubName, userId);
37+
}

0 commit comments

Comments
 (0)